所以基本上这是一个小字符串游戏的一部分,我正在做,这是真的嗡嗡叫我出来。玩家可以按“a”或“d”在房间里向左或向右看以收集线索。如果玩家已经看过那个地方。它弹出一条信息说“你已经来过这里了”
虽然,它会去一次正确的点,然后下一个点会弹出一条消息说“你已经在这里”。例子。如果我按“a”,那么“d”代表“d”,它会说我已经去过那里了,但我还没有去过。有什么帮助/建议吗??你知道吗
left = 0
right = 0
#Room 1 movements
def roomOneLeft():
global left
left = 1
print '-- You search the rubble and find some cloth'
return roomOneMoves()
def roomOneRight():
global right
right = 1
print '-- You find a pick under a wooden chair'
return roomOneMoves()
#room 1 user choose
def roomOneMoves():
global left
global right
move = raw_input("")
if left == 1:
print 'you have already been here'
return roomOneMoves()
if right == 1:
print 'you have already been here'
return roomOneMoves()
if move == 'a':
roomOneLeft()
if move == 'd':
roomOneRight()
roomOneMoves()
编辑:谢谢大家的帮助。我很抱歉,如果我的代码是相当令人沮丧的看!现在开始工作了。但只有你的帮助。你知道吗
浏览代码:
roomOneMoves()
a
,移动变为'a'
left
不是1
,所以我们不进入if的那个分支。你知道吗right
不是1
,所以我们不进入if的那个分支。你知道吗move
是'a'
,所以我们称之为roomOneLeft()
left
变成1
,我们打印一条消息,然后再次调用roomOneMoves()
。你知道吗d
,move
变成'd'
left
现在是1,所以我们打印一条消息并再次调用roomOneMoves()
。你知道吗换言之,在决定用户真正想去哪个房间之前,您要先检查自己是否去过房间并退出。你知道吗
你不检查你的行动,直到为时已晚。观察:
如果用户真的向左走了,你只想计算
left == 1
部分,不是吗?相反,嵌套if语句,如下所示:此外,您应该重新考虑数据结构,使用具有布尔值或类似值的字典,而不是全局变量。此外,由于大多数Python解释器无法有效地计算tail recursion,因此您可能希望使用迭代的主循环,而不是递归地调用下一个函数。你知道吗
虽然有很多事情可以说是'不确定'关于您的代码,您的问题来自这样一个事实,即无论玩家的移动
left
和right
都被检查。如果按“a”left
,则变为1。在它之后按“d”将检查left
是否为1并打印消息。你知道吗相关问题 更多 >
编程相关推荐