Python编写坦克游戏while循环仅运行6轮即停止,求故障排查方案
坦克游戏循环异常终止问题排查
问题根因
- 致命错误1:每轮循环都重新放置坦克
坦克放置函数TankPlace()被写在了while主循环内部,原本仅需开局放置10辆坦克,现在每走一步都会尝试再放10辆。8*8的棋盘总共只有64个格子,前6轮累计放了60辆坦克,第7轮运行TankPlace()时,仅剩4个空格,函数里的while True会一直找空位置放剩下的6辆坦克,直接卡死在无限循环里,看起来就像程序停止运行。 - 错误2:未接收游戏输入判断的返回值
你调用GameInput()后没有用变量接收返回结果,直接写if GameInput == "True",这里GameInput是函数对象本身,永远不可能等于字符串,所以得分判断永远不生效,score始终为0,原本的提前终止逻辑完全没用。 - 小缺陷:回合计数逻辑有偏差
go变量的自增操作放在了循环末尾,初始值为0的情况下,要走到go==50的判断条件,实际会运行51次回合,和你设定的50轮规则不符。
修复方案
- 把
TankPlace()从while主循环里移出来,放在开局打印规则之后,仅执行一次 - 修改主循环里的
GameInput()调用逻辑,用变量接收返回值:
hit_result = GameInput(int(input("\nWhat is your X coordinate?\n")), int(input("\nWhat is your Y coordinate?\n"))) if hit_result == "True": score += 1
- 调整回合计数逻辑,要么把
go +=1放在循环开头,要么把终止判断改成go == 49,或者直接把循环改成for go in range(50)更简单 - 可选优化:把
GameInput()返回的字符串"True"/"False"改成布尔值True/False,判断时不需要加引号,避免类型错误。
内容的提问来源于stack exchange,提问作者CamoMP
相关产品推荐
相关产品推荐

