Zum Beispiel habe ich eine Spielklasse int
, in der das Leben des Spielers aufgezeichnet wird. Ich habe eine Bedingung
if ( mLives < 1 ) {
// Do some work.
}
Diese Bedingung wird jedoch weiterhin ausgelöst und die Arbeit wird wiederholt ausgeführt. Zum Beispiel möchte ich einen Timer einstellen, um das Spiel in 5 Sekunden zu beenden. Gegenwärtig wird es in jedem Frame auf 5 Sekunden eingestellt und das Spiel endet nie.
Dies ist nur ein Beispiel und ich habe das gleiche Problem in mehreren Bereichen meines Spiels. Ich möchte nach einer Bedingung suchen und dann einmal und nur einmal etwas tun und dann den Code in der if-Anweisung nicht erneut überprüfen oder ausführen. Einige mögliche Lösungen, die in den Sinn kommen, sind ein bool
für jede Bedingung und das Festlegen, bool
wann die Bedingung ausgelöst wird. In der Praxis wird dies jedoch sehr unübersichtlich bools
, da sie als Klassenfelder oder statisch innerhalb der Methode selbst gespeichert werden müssen.
Was ist die richtige Lösung dafür (nicht für mein Beispiel, sondern für die Problemdomäne)? Wie würdest du das in einem Spiel machen?