Ich habe noch nie wirklich viel Spielprogrammierung gemacht, ziemlich unkomplizierte Frage.
Stellen Sie sich vor, ich baue ein Tetris-Spiel, dessen Hauptschleife ungefähr so aussieht.
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
remove all complete rows
move rows down so there are no gaps
if we can spawn a new block
spawn a new current block
else
game over
Bisher geschieht alles im Spiel sofort - Dinge werden sofort erzeugt, Zeilen werden sofort entfernt usw. Aber was ist, wenn ich nicht möchte, dass Dinge sofort geschehen (dh Dinge animieren)?
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
?? animate complete rows disappearing (somehow, wait over multiple frames until the animation is done)
?? animate rows moving downwards (and again, wait over multiple frames)
if we can spawn a new block
spawn a new current block
else
game over
In meinem Pong-Klon war dies kein Problem, da ich in jedem Frame nur den Ball bewegte und nach Kollisionen suchte.
Wie kann ich mich um dieses Problem kümmern? Sicherlich beinhalten die meisten Spiele eine Aktion, die mehr als einen Frame benötigt, und andere Dinge werden angehalten, bis die Aktion abgeschlossen ist.
Action
Klasse und eine Reihe von Aktionen vor, die ausgeführt werden sollen. Wenn eine Aktion abgeschlossen ist, entfernen Sie sie aus der Warteschlange und führen Sie die nächste Aktion usw. aus.