我正在做一个python游戏,有一个小问题。有一条走廊左右分开。当你向左走的时候,你会得到一把钥匙,当你向右走的时候,你会看到一个锁着的电梯。钥匙是打开电梯的钥匙。当一个用户试图在游戏中后退,然后他们又回到大厅时,问题就出现了。代码如下:
def elevator(Lock):
if lock== 'unlock':
print "Unlocked"
else:
print "It is locked"
def safe():
print "obtain key"
right_left('True')
def right_left(Key):
backward = ['back']
left = ['left', 'Left']
right = ['right', 'Right']
choice = raw_input("Enter Command > ")
if Key == 'True':
print "Left or right?"
if choice== 'right':
elevator('Unlock')
elif choice == 'back':
back()
else:
if any (s in choice for s in backward):
back()
elif any (s in choice for s in left):
safe()
elif any (s in choice for s in right):
elevator()
def back():
print "Back in the game."
right_left('False')
我遇到的一个大问题是,如果用户拿起钥匙回到左右大厅,然后他们选择返回。如果他们回到游戏中,一路回到开头(这不在本示例/示例中),它将返回'back()'函数并继续返回'right\u left'函数,Key=false。但必须是真的。我不知道“right\u left”怎么会是真的,不管用户将来做什么,它都会是真的。谢谢,很抱歉这让人困惑
这听起来像是面向对象代码的一个好问题。下面是一个简单的例子。首先,您可能需要创建一个游戏状态对象,如下所示:
这个game state对象还可以用来存放更多关于yoru游戏的信息,例如当前位置。你知道吗
然后您需要创建gameState对象的实例(传递给每个函数或用作全局变量)。例如,您的main可能看起来像:
问题是,您的结构在无休止的right\u left()调用堆栈上调用自己,这似乎无法逃脱。您只将两个不同的字符串('True','False')传递到此方法中,因此没有用户的真实状态。你知道吗
您需要为用户重新构造路径,并将移动决策与文件室逻辑分开。然后可以为用户保存某种上下文,也可能为文件室保存某种状态。这将受益于面向对象的设计,否则您将需要使用globals来保持房间的状态。你知道吗
要使用全局变量执行此操作,可以定义以下方法:
相关问题 更多 >
编程相关推荐