Python文本冒险游戏中如何实现while语句在特定条件下重启?
文字冒险游戏循环逻辑修复方案
问题原因
当前代码逻辑存在两个问题:
- 循环条件
response not in directions的逻辑是:只要玩家输入了方向列表内的有效内容,循环就会直接终止,因此选left后不会重新触发选择 - 方向列表存在拼写不一致:列表里写的是
backward,但输入提示是backwards,会导致玩家输入正确内容也被判定为无效
修复方案
调整循环控制逻辑,用标记位控制循环是否继续:只有当玩家选择了有明确结局的方向(right/backwards)时才退出循环,选择left则继续停留在循环内重新选择。
修改后的完整代码如下:
import os # 初始化配置 yes_no = ["yes", "no"] # 修正拼写错误,和输入提示的backwards保持一致 directions = ["left", "right", "forward", "backwards"] # 获取玩家姓名 name = raw_input("露营者,你叫什么名字? ") os.system("clear") # 剧情介绍 print("这是你和家人在大森林房车露营的最后一晚。你们全家决定散步去看夜空中漂亮的星星。跟着家人走的时候,你的手电筒掉到了灌木丛里。等你回到小路上时,你彻底转晕了,完全不知道家人去了哪里。\n") print("你回到路上时发现前面分成了两条岔路!"+name+",你觉得家人走了哪条路?") # 用标记位控制循环,默认保持循环 keep_choosing = True while keep_choosing: response = raw_input("\n请输入方向:left/right/backwards\n") if response == "left": os.system("clear") print("你沿着左边的小路往前走,路过了一棵被砍倒的树。你继续沿着路走了大概2分钟,又看到了那棵同款被砍倒的树——你居然绕了个圈!你走回了岔路口,现在要选哪条路?\n ") # 选left不修改标记位,循环继续 elif response == "right": os.system("clear") print("你沿着右边的小路往前走,夜色越来越暗了...\n ") # 选right进入后续剧情,退出循环 keep_choosing = False elif response == "backwards": os.system("clear") print("你沿着身后的路往回走,听到了嘎吱嘎吱的响声。走近一看,是你家的房车!原来你把一堆薯片落在了外面的露营椅上。哦不好,一头熊正在吃薯片!再见了露营者,你被熊吃了...\n\n 你达成结局:熊口丧命") quit() else: print("\n\n\n\n我没明白你的意思,请输入以下选项中的一个:")
核心改动说明
- 把原来的循环条件换成了自定义标记
keep_choosing,默认值为True保持循环运行 - 只有选择了
right时才把标记设为False退出循环,选择backwards直接调用quit()结束程序 - 选择
left时不做任何标记修改,循环会自动回到输入步骤,让玩家重新选择方向 - 修正了方向列表的拼写错误,避免无效输入的误判
内容的提问来源于stack exchange,提问作者RLM
相关产品推荐
相关产品推荐

