为什么对游戏循环使用 while 循环?

Why use a while loop for a game loop?

只是想知道,使用 while 循环作为游戏循环是否有特定原因。或者我可以使用另一种方法,比如这个。

注意:这不是正确的代码,尚未经过测试。这只是一个大概的想法。此示例也不符合特定的编码语言,但可能主要遵循 JavaScript,因为这是我脑海中浮现的编码语言。我实际上在飞镖中尝试过类似的东西(google flutter)。

var startTime;
var running = false;

function loop1(){
  startTime = system.currentMillis();
  loop2();
}

loop2(){
  gameUpdate();
  //ignore my math, I did not focus on doing that property
  //this is just an example and is not proper math
  var delay = 1000 / (system.currentMillis() - startTime);
  setTimeout(loop3, delay);
}

loop3(){
  if(running){
    loop1();
  }
}

编辑:使用类似的东西来避免使用 sleep(); 的需要对性能有帮助吗? (或 phone 电池)

完全可以将您的代码用作主要游戏循环。首选 while 的原因是因为主游戏循环会无休止地执行直到中止,这只需使用 while (true) 并使用 breakwhile (abort == false) 在内部某处中止即可并在内部某处设置 abort = true 。请注意,其他循环变体(例如 fordo-while 更加冗长,除非您的语言允许您这样做 for (;;)。另请注意,您可以使用 while 循环将建议的循环重组为更简单的版本。