出现多个消息框而不是一个

Multiple message boxes appear instead of one

我正在 VB 中设计 Breakout 风格的游戏,但我的代码存在一些小问题。

我正在检查球与表格的 4 个边之间的碰撞。因此,当球与表单底部碰撞时,游戏将显示一个消息框,上面写着 "You Lost!" 以及 Retry 和 Cancel 按钮。

这是我在 Timer1_Tick 事件中编写的代码:

'check bottom of screen 
If PictureBox_ball.Top >= 403 Then
    '403 is the Y-coordinate of a horizontal line I have implemented 
    MsgBox("You Lost!", MessageBoxButtons.RetryCancel)
End If

但是,当我 运行 此代码时,游戏会显示多个消息框(大约 25 个相同的消息框)而不是显示一个。它并不止于此。

当小球向下移动并撞到屏幕底部时,小球停止移动,显示一堆消息框,然后继续向下移动并离开屏幕。

我该如何解决这个问题?

以上代码在您的主循环中。由于您没有更改任何其他标志(例如:game_over = True 或解除计时器滴答声),循环保持 运行,该值仍然匹配条件,并且您得到所有​​这些 MessageBoxes

例如:

If not you_lost
  if PictureBox_ball.Top >= 403 Then '403 is the Y-coordinate of a horizontal line I have implemented 
    MsgBox("You Lost!", MessageBoxButtons.RetryCancel)
    you_lost = True
End If

如果

结束

This is what I have coded under my Timer1_Tick event:

停止你的计时器,然后再叫出你的msgBox
为什么 ??

因为计时器一直在滴答作响,并且随着它滴答作响,它会显示您的消息框。

试一试,我之前的项目也遇到过同样的问题。