在python中与基于文本的游戏搏斗

在python中与基于文本的游戏搏斗,python,adventure,Python,Adventure,我正在为我的大学计划而奋斗。我正在做一个基于文本的冒险游戏,这是一个非常简单的游戏,但我似乎无法越过这个障碍 我试着打电话给列表显示“你已经选择了…”,但我似乎无法让它这么做,我试着按照我之前用另一个列表做的做,但我想我迷路了 随机导入 导入时间 list_intro=[“吊桥”,“下水道”]#为路径ingame命名两个索引。 大厅房间=[“左门”、“右门”] def intro(): 印刷品(“你在当地的酒馆里听说一座废弃的城堡里藏有许多宝藏。”) 打印(“你要旅行7天,直到你发现自己在通往城

我正在为我的大学计划而奋斗。我正在做一个基于文本的冒险游戏,这是一个非常简单的游戏,但我似乎无法越过这个障碍

我试着打电话给列表显示“你已经选择了…”,但我似乎无法让它这么做,我试着按照我之前用另一个列表做的做,但我想我迷路了

随机导入
导入时间
list_intro=[“吊桥”,“下水道”]#为路径ingame命名两个索引。
大厅房间=[“左门”、“右门”]
def intro():
印刷品(“你在当地的酒馆里听说一座废弃的城堡里藏有许多宝藏。”)
打印(“你要旅行7天,直到你发现自己在通往城堡的小路底部。”)
打印(“站在城堡跑道脚下,您可以看到两个进入选项。”)
对于索引,枚举中的路径(列表\u简介):
#这是打印两个选项以及索引值+1(索引从@0开始)的循环。
打印(str(索引+1)+“”,路径)
#打印(“1.通过吊桥进入”)
#打印(“2.在护城河下游泳并进入下水道。”)
故事={}
def chosenpath():
path=“”
当路径!=“1”和路径!=“2”:#我们包括输入验证,这意味着只有预定义的值才有效。
路径=输入(
“您将选择什么路径?(1或2):”)#包含布尔运算符“和”也在这里
返回int(路径)
def checkpath(path):#这里我们只是创建一个函数,根据用户选择的选项返回字符串。
打印(“您已选择”,列表\u简介[路径-1])
返回输入路径(路径)
def进入_路径(路径):
print(f“因此您已经输入了{list_intro[path-1]}”)#这里我们只是使用用户输入从
#我们的列表使用索引值。
如果路径==1:
return“”“你穿过吊桥,看到一个石像鬼正直视着你,
在你有时间做出反应之前,你会感觉到有轻微的刷子划过你的脖子,然后你会摔倒在地
但是看到你的身体站着,你的头似乎不再依附于你的身体。
祝你下次好运!”
如果路径==2:#在此处为其他路径添加新字符串。
return“”“你爬上通向城堡腹部的小壁架,不幸的是游得不好,
&你现在到处都是旧污水和潮湿的水。走上楼梯后,你会发现自己在一个大餐厅里,
大厅后面有两扇门,一扇在左边,一扇在右边。你选哪一扇?”
印刷品(大厅和房间)
def餐厅和客房()
打印(“您已经选择了”,大厅房间[-1])
简介()
path=chosenpath()
打印(检查路径(路径))
我没有收到任何错误消息,但当我沿着“下水道”的路径运行代码时,我得到了以下信息-

You heard at the local tavern of a abandoned castle holding many treasures.
You journey for 7 days until you find yourself at the bottom of the path leading to the castle.
Standing at the foot of the castles runway you see two options to enter.
1. The drawbridge.
2. The sewers.
What path will you choose? (1 or 2): 2
You have chosen The sewers.
So you've entered The sewers.
You climb over the small ledge leading into the castles underbelly,unfortunately the swim wasn't great,
& you now wreak of old sewage and damp water. After walking up some stairs you find yourself in a grand dining hall,
At the back of the hall there are two doors, one on the left and one on the right. What one do you choose?

Process finished with exit code 0

很抱歉,如果我遗漏了一些非常明显的东西,编码当然不是我最擅长的领域,但我真的很想改进。也为语法错误表示歉意。

您的代码结构让您感到有点尴尬

你基本上做到了这一点:

def entering_path:
    if path == 1:
        return
    if path == 2:
        return
    print(“foo”)
但如果路径为1或2,则最后一行print语句将永远不会运行,因为您已经从退出它的函数返回了一个值

您需要将print语句移出该函数,或者让函数直接打印步骤,而不是返回打印的值

我建议您对程序流进行更多的研究,而不是修改代码。您希望您的故事(只是数据)与您的逻辑分开存储并与用户交互,并且希望逻辑流易于阅读


理想情况下,您应该有一个包含故事的数据结构和一个解析该数据的函数,这样您就可以在不修改函数的情况下添加或删除部分故事,并且仍然可以完成完整的故事工作

预期产量是多少?你已经描述了你现在的位置,但不清楚你想要实现什么……我希望它接着提到一组新的结果,基于餐厅选择的门,我计划在一个后面放一个怪物,在另一个后面放一个宝藏室。这意味着一个将导致游戏“获胜”,另一个将要求重新启动。我知道我还没有定义它们,但我打算稍后实现它们。我想要发生的是,就像在第31行,它说“你已经选择了”我希望它在运行时说“那么你已经选择了左/右门”,但到目前为止它没有,它只是打印出玩家进入大厅的最后一串。惊喜!您的代码完全按照您的要求执行。请参阅此[可爱的调试站点]()以获取帮助。您的整个流程只适用于一个房间的转换:您请求输入1或2,调用相应的函数,然后退出程序。撇开叙述不谈,这就是你编写的所有代码。如果你想做不止一次的事情…使用循环?同时,将故事线和控制流分开。学习足够多的编程来构建你的互联世界——从一个区域移动到另一个区域——你的描述只是那些你已经很好地跟踪的简单描述,比如“下水道”。一旦你的玩家可以在情节中移动,你就可以载入故事。我同意了,我和班上的一些人谈过,他们也建议用字典来代替我最初的做法。我想我会改用它,我没有太多使用它们的经验,但我会看看它会怎么样,谢谢你的评论!