Je n'ai jamais vraiment fait beaucoup de programmation de jeu auparavant, une question assez simple.
Imaginez que je construis un jeu Tetris, avec la boucle principale ressemblant à ceci.
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
Tout dans le jeu arrive si loin instantanément - les choses sont instantanément donné naissance, les lignes sont supprimées instantanément , etc. Mais si je ne veux que les choses se passent instantanément ( par exemple) les choses animées?
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
Dans mon clone Pong, ce n'était pas un problème, car à chaque image, je déplaçais simplement la balle et vérifiais les collisions.
Comment puis-je comprendre ce problème? La plupart des jeux impliquent sûrement une action qui prend plus qu'un cadre, et d'autres choses s'arrêtent jusqu'à ce que l'action soit terminée.
Action
classe et une file d'actions à effectuer. Lorsqu'une action est terminée, supprimez-la de la file d'attente et effectuez l'action suivante, etc. Bien plus flexible qu'une machine à états.