ฉันไม่เคยเขียนโปรแกรมเกมมาก่อนจริงๆคำถามตรงไปตรงมา
ลองนึกภาพฉันกำลังสร้างเกม 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
คลาสและคิวการกระทำ เมื่อการดำเนินการเสร็จสมบูรณ์ให้ลบออกจากคิวและดำเนินการต่อไป ฯลฯ วิธียืดหยุ่นกว่าเครื่องรัฐ