You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改while循环代码以满足多关卡游戏模拟需求?

修正方案

你的代码核心问题是while循环里一次性硬编码调用了所有关卡函数,导致一次循环就跑完所有关卡,完全不符合「每次循环迭代仅处理一个关卡」的要求。以下是具体修改步骤和修正后的代码:

关键修改点

  • 补全未定义的NUM_LEVELS常量(你代码里用到但没声明,值设为3对应三个关卡)
  • 重构while循环逻辑:每次循环只根据当前level值调用对应关卡的函数,而非一次性执行所有
  • 在循环内先打印当前关卡提示,再调用对应函数,最后完成关卡升级

修正后的完整代码

function main() {
  // 定义总关卡数常量
  const NUM_LEVELS = 3;
  // 初始关卡设为1
  let level = 1;

  // 游戏循环:当前关卡未超过总关卡数时持续运行
  while (level <= NUM_LEVELS) {
    // 告知玩家当前所处关卡
    console.log(`当前正在游玩第 ${level} 关`);
    
    // 根据当前关卡调用对应函数
    switch(level) {
      case 1:
        playLevel1();
        break;
      case 2:
        playLevel2();
        break;
      case 3:
        playLevel3();
        break;
    }

    // 关卡完成,升级到下一关
    level++;
  }

  // 所有关卡完成后的结束提示
  console.log("所有关卡已完成!游戏结束");
}

function playLevel1() {
  console.log(
    "You are on level 1! You must escape the jungle before wild animals are unleashed! First lets escape this maze."
  );
}

function playLevel2() {
  console.log(
    "Good job escaping that maze! Now we must make it down this steep cliff."
  );
}

function playLevel3() {
  console.log(
    "Finally, we must find the nearby village. Once that is complete, we will be safe."
  );
}

main();

可选优化

如果后续要新增更多关卡,不想每次修改switch分支,可以用动态函数调用简化代码,把switch部分替换成:

// 动态拼接函数名并调用
window[`playLevel${level}`]();

这种方式在关卡数量较多时更高效,无需重复修改判断逻辑。

内容的提问来源于stack exchange,提问作者Elizabeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:40:22