Я ніколи насправді не робив багато ігрових програмувань раніше, досить просте запитання.
Уявіть, що я будую гру Tetris, головна петля виглядає приблизно так.
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
Все в грі до сих пір відбувається миттєво - речі породжуються миттєво, рядки видаляються миттєво і т.д. Але що , якщо я НЕ хочу, щоб відбутися миттєво (тобто одухотворені речі)?
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
У моєму клоні Понга це не було проблемою, оскільки кожен кадр я просто переміщав м'яч і перевіряв на зіткнення.
Як я можу обернути голову навколо цього питання? Безумовно, більшість ігор передбачає певну дію, яка займає більше рамки, а інші речі зупиняються, поки дія не буде виконана.
Action
клас та чергу дій, які потрібно виконати. Коли дія завершена, вийміть її з черги та виконайте наступну дію тощо. Шлях гнучкіший, ніж стан-машина.