2016-08-24 7 views
-1

VBでブレイクアウトスタイルのゲームを設計していて、コードに軽微な問題があります。1つではなく複数のメッセージボックスが表示される

ボールとフォームの4辺の衝突を確認しています。したがって、ボールがフォームの下部に衝突すると、ゲームには「You Lost!」というメッセージボックスが表示されます。再試行およびキャンセルボタンが表示されます。しかし、

'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 

私はこのコードを実行すると、ゲームではなく1を表示する(同じものの25の周りに)複数のメッセージボックスが表示されます。

これは私が私のTimer1_Tickイベントの下でコード化されたものです。そしてそれはそこで止まらない。

ボールが下に移動して画面の下部に達すると、ボールの動きが止まり、一連のメッセージボックスが表示され、画面の下方向に移動し続けます。

どうすればこの問題を解決できますか?

+0

もっとコードを提供してください。メッセージボックスコードはいつ呼び出されますか?どのようにゲームアニメーションループなどを実装しましたか?デバッガを実行しましたか?または、コンソールに情報を表示する。 –

答えて

0

は、これは私が私のTimer1_Tickイベントの下でコード化されたものである場合:

を呼び出す前にタイマーを停止するmsgBox
なぜですか?

タイマーは常に刻々と変化しているので、目立つようにmsgBoxが表示されます。

私は自分のプロジェクトでこれまでに同じ問題を抱えています。

0

上記のコードはメインループにあります。あなたは(のような:game_over = Trueまたはタイマーチックを武装解除)他のフラグを変更しないので、ループは値がまだ条件に合致している、動作を続け、そしてあなたは、これらすべてのメッセージボックスたとえば

取得:

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 

エンド

関連する問題