如何修改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
相关产品推荐
相关产品推荐

