我正在用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;
}
我试图通过将砖块设置为零来删除砖块之后删除矩形类,但是矩形仍然存在且仍然可以被击中,触发命中砖代码。
任何建议,对不起,如果我不是很清楚。
答案 0 :(得分:1)
这根本不会很好地扩展,因为你似乎在为每个砖块声明一个新变量。
考虑将Rectangle
s放入某种多样的List
中。然后迭代该列表以查看砖块是否被击中。如果有,请将其从列表中删除,然后重新绘制。
答案 1 :(得分:0)
无需创建新的Rectangle,已有静态成员:
if (hitBrick4 && brick4 != Rectangle.Empty)
{
brick4 = Rectangle.Empty;
...
}
答案 2 :(得分:0)
这是一个示例代码,它将在TextBox上绘制一个矩形,即我给它一个自定义边框 [代码]
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),不要画画,不要麻烦!