2016-08-24 3 views
-1

Ich entwerfe ein Breakout-Stil-Spiel in VB und habe einige kleinere Probleme mit meinem Code.Mehrere Nachrichtenfelder erscheinen anstelle von einem

Ich überprüfe auf Kollisionen zwischen dem Ball und den 4 Seiten des Formulars. So, wie der Ball mit dem Boden des Formulars kollidiert, soll das Spiel ein Nachrichtenfeld mit der Aufschrift "You Lost!" mit den Schaltflächen Wiederholen und Abbrechen.

Dies ist, was ich unter meinem Timer1_Tick Ereignis codiert haben:

'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 

Allerdings, wenn ich diesen Code ausführen, zeigt das Spiel mehrere Meldungsfelder (etwa 25 von den gleichen) anstelle einer darstellen kann. Und damit hört es nicht auf.

Während sich der Ball nach unten bewegt und auf den unteren Bildschirmrand trifft, stoppt der Ball die Bewegung, zeigt eine Reihe von Meldungsfeldern an und bewegt sich dann weiter nach unten und aus dem Bildschirm.

Wie könnte ich das beheben?

+0

Bieten Sie mehr Code. Wann wird Ihr Message-Box-Code aufgerufen? Wie hast du die Spielanimationsschleife implementiert? Haben Sie den Debugger ausgeführt? Oder drucken Sie einige Informationen zur Konsole. –

Antwort

0

Dies ist, was ich unter meinem Timer1_Tick Ereignis codiert haben:

Stop Ihr Timer bevor Sie Ihre anrufen msgBox
WARUM ??

Da der Timer immer tickt, und wenn er tickt, zeigt er Ihre msgBox an.

Probieren Sie es einfach aus, ich hatte das gleiche Problem zuvor bei meinen Projekten.

0

Der obige Code befindet sich in Ihrer Hauptschleife. Da Sie eine andere Flagge nicht (wie: game_over = True oder die Timer-Tick entwaffnen) ändern, hält die Schleife läuft, wird der Wert immer noch die Bedingung erfüllen, und Sie diese Message alle

Zum Beispiel erhalten:

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 

end if

Verwandte Themen