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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:45:02