2010-11-27 9 views
3

私はC#でブレイクアウトゲームを作成しています。ブール値を使ってレンガを描画するかどうかをプログラムに指示しています。描画する長方形を描画するために、矩形クラスを削除する

Rectangle brick4 = new Rectangle((490), (50), (50), (20)); 
bool hitBrick4 = brick4.Contains(x, y); 
if (hitBrick4) 
{ 
    brick4 = new Rectangle(0, 0, 0, 0); 
    brick4draw = false; 
    yChange = -yChange; 
    bricksdestroyed = bricksdestroyed + 1; 
    lblBricksDestroyed.Text = "Bricks Hit: " + bricksdestroyed; 
} 

私はレンガがゼロのにそれを設定することにより、ヒットされた後、長方形のクラスを削除しようとしていますが、長方形:ボールはレンガ

をヒットした場合、これは私がこれまで使用したコードですまだそこにあり、ヒットすることができ、ヒットしたレンガコードをトリガーします。

私は非常に明確ではない場合、ごめんなさい。

+6

理想的には、レンガのコレクション(またはそのようなもの)からレンガのエンティティを削除するのが理想的です。 「整数を削除できない」ように、「四角形を削除する」ことはできません。あなたのプログラムの構造をもう少し見直すべきでしょうか? – strager

答えて

1

あなたはすべてのレンガの新しい変数を宣言しているように見えるので、これは全くうまくスケールされません。

Rectangleをいくつかの種類のListに入れてください。次に、そのリストを繰り返して、レンガがヒットしたかどうかを確認します。それがあるときは、それをリストから削除し、再描画します。

0

新しいRectangleを作成する必要はありません、このための静的メンバすでにあります:

if (hitBrick4 && brick4 != Rectangle.Empty) 
{ 
    brick4 = Rectangle.Empty; 
    ... 
} 
0

OMGは、私は同じようなことを探していましたが、私が見つけた解決策で驚きました!あなただけのVisualBasicのパワーパックを使用することができ、それはVisual Studioのここでは2008

の私のバージョンに含まれている、すなわち、私はそれをカスタムボーダー [コード]

Dim x = TextBox1.Location.X 
Dim y = TextBox1.Location.Y 
Dim width = TextBox1.Width 
Dim height = TextBox1.Height 
Dim ShapeContainer1 As New Microsoft.VisualBasic.PowerPacks.ShapeContainer 
Me.Controls.Add(ShapeContainer1) 
Dim RectangleShape1 As New Microsoft.VisualBasic.PowerPacks.RectangleShape 
ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {RectangleShape1}) 
RectangleShape1.Location = New System.Drawing.Point(x - 1, y - 1) 
RectangleShape1.Size = New System.Drawing.Size(width + 1, height + 1) 
RectangleShape1.BorderColor = Color.MistyRose 
ShapeContainer1.Refresh() 
を与えている、テキストボックスの上に四角形を描画しますサンプルコードです

コードは自己記述的ですが、問題がある場合はメッセージを残してください... はい、四角形を削除する場合は、コントロール(RectangleまたはShapeContainer全体)絵画、面倒なく!

関連する問題