Tôi chưa bao giờ thực sự làm nhiều chương trình trò chơi trước đây, câu hỏi khá đơn giản.
Hãy tưởng tượng tôi đang xây dựng một trò chơi Tetris, với vòng lặp chính trông giống như thế này.
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
Mọi thứ trong trò chơi cho đến nay đều xảy ra ngay lập tức - mọi thứ được sinh ra ngay lập tức, các hàng được xóa ngay lập tức, v.v ... Nhưng nếu tôi không muốn mọi thứ xảy ra ngay lập tức (tức là những thứ hoạt hình) thì sao?
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
Trong bản sao Pông của tôi, đây không phải là vấn đề, vì mọi khung hình tôi chỉ đang di chuyển quả bóng và kiểm tra va chạm.
Làm thế nào tôi có thể quấn đầu xung quanh vấn đề này? Chắc chắn hầu hết các trò chơi liên quan đến một số hành động mất nhiều hơn một khung và những thứ khác dừng lại cho đến khi hành động được thực hiện.
Action
lớp và một hàng các hành động để thực hiện. Khi một hành động hoàn tất, loại bỏ nó khỏi hàng đợi và thực hiện hành động tiếp theo, vv Cách linh hoạt hơn một máy trạng thái.