我一直在编写一个基于文本的RPG,以熟悉类、函数和模块,以及它们如何相互作用和相互关联。目前,我有一个房间,真的是一个功能,它有点像一个连接3个不同房间的集线器型区域。我将在这里发布一些代码,并在这段代码之后详细说明我的问题。代码看起来有点像这样(简化以显示我的观点):
def room_hub():
movement = raw_input("[W] for North, [D] for East, and [A] for West:").lower()
if movement == 'd':
if room_E_bool == False:
print "You have moved East! "
room_East()
elif room_E_bool == True:
print "You have already been to that room! "
room_hub()
def room_East():
print "There's treasure here!"
treasure = raw_input("Press [Y] to collect treasure! ").lower()
if treasure == 'y':
room_E_bool = True
print "You have collected treasure!"
print "Returning to the hub area!"
room_hub()
else:
print "Not a valid command!"
room_hub()
我的想法是,当用户运行一个函数时,我希望更改一个布尔值。这样一来,当他们回到中心区时,就不允许他们重访某个房间。当然,这可能不是一个很好的方法来做这样的事情,如果是这样的话,我想给大家介绍一些其他的解决办法,来解决这个问题,一旦玩家访问了某些房间,就限制他们进入。在
我尝试将boolean作为全局变量,将其列在Python文件的顶部,以便hub函数可以引用布尔值来确定哪些选项可用。但是,这种全局布尔方法和函数内部的局部方法似乎都不能很好地声明新的布尔值。在
有没有一种方法可以让我用布尔函数来判断一个玩家是否已经运行了某个函数,或者有更好的方法来完成这个任务?在
编辑: 这是我正在引用的代码。我把布尔值移到了player类型[D]之后,改变了值,但是它仍然循环,允许它们回到房间。在
^{pr2}$抱歉,如果代码是混乱的和什么不是。它离完成还很远很远。在
我解决了。谢谢你的帮助,尤其是上面的汤姆·卡兹。我将布尔变量更改为全局变量,然后注意
global bool
,我可以根据用户对[D]的选择更改全局变量,方法是:elif input == 'd': global bool bool = True
它现在按我想要的方式工作。在
相关问题 更多 >
编程相关推荐