玩家移动功能失效问题排查求助
玩家移动功能失效问题排查求助
嘿,我瞅了下你贴的代码,发现你这小游戏的玩家移动功能还没写完呢,这肯定会导致移动失效呀!咱们一起来捋捋问题,然后把功能补上~
先把你目前的代码贴出来方便分析:
import "dart:io"; void main(){ var playeravatar = '[-*-]'; bool gameplaying = true; var layer1 = ['*', '0', '*']; var layer2 = ['*', '0', '*']; var layer3 = ['*', playeravatar, '*']; while (gameplaying){ print(layer1); print(layer2); print(layer3); var lane1 = [layer1[0], layer2[0], layer3[0]]; var lane2 = [layer1[1], layer2[1], layer3[1]]; var lane3 = [layer1[2], layer2[2], layer3[2]]; print("where would you
目前代码存在的核心问题
- 代码写到询问玩家移动位置就中断了,完全没有读取用户输入的逻辑,更别说根据输入更新玩家位置的代码了
- 你定义的
lane1/lane2/lane3只是把列元素存起来,但没用到移动判断的逻辑里,相当于白忙活啦
修复建议&完整示例代码
我给你补全了移动功能,还优化了代码结构,用二维数组管理地图会更方便:
import "dart:io"; void main(){ var playeravatar = '[-*-]'; bool gameplaying = true; // 把三个layer改成二维数组,更方便遍历和修改位置 var gameMap = [ ['*', '0', '*'], ['*', '0', '*'], ['*', playeravatar, '*'] ]; while (gameplaying){ // 打印当前游戏画面,用join让排版更美观 for (var row in gameMap) { print(row.join(' ')); } print("\nWhere would you move? Enter lane number (1/2/3) or type 'quit' to exit:"); var userInput = stdin.readLineSync(); // 处理退出游戏的情况 if (userInput == 'quit') { gameplaying = false; print("Thanks for playing! Game over."); continue; } try { // 把输入的车道号转成数组索引(因为数组是从0开始的) var targetLane = int.parse(userInput!) - 1; // 检查输入的车道是否合法 if (targetLane < 0 || targetLane > 2) { print("Oops! Invalid lane. Please enter 1, 2, or 3.\n"); continue; } // 先找到玩家当前的位置 int playerRow = -1; int playerCol = -1; for (int i = 0; i < gameMap.length; i++) { if (gameMap[i].contains(playeravatar)) { playerRow = i; playerCol = gameMap[i].indexOf(playeravatar); break; } } // 更新玩家位置:清空原位置,把头像放到目标车道 gameMap[playerRow][playerCol] = '0'; // 原位置恢复成初始的'0' gameMap[playerRow][targetLane] = playeravatar; // 移动到目标车道 } catch (e) { // 处理非数字输入的情况 print("Invalid input! Please enter a number (1/2/3) or 'quit'.\n"); } } }
改动说明
- 把分散的
layer1/layer2/layer3改成二维数组gameMap,后续修改位置会更灵活 - 增加了用户输入读取和异常处理,避免非法输入导致程序崩溃
- 实现了完整的位置查找和更新逻辑,输入1/2/3就能切换玩家所在车道
- 优化了打印排版,游戏画面看起来更清晰
- 加入了退出游戏的选项,避免死循环
备注:内容来源于stack exchange,提问作者alex Currie
相关产品推荐
相关产品推荐

