Python代码函数未正确更新变量
我试图做一个简单的基于文本的房间游戏,你可以从一个房间到另一个房间,它会给你一个描述,你可以四处走动。输入1后,输出相应工作。在它要求您再次输入并且您输入了一个方向之后,程序什么也不做。 我在前面的代码中定义了不同的room1、room2等。我认为这与我的方向函数和xy变量有关,但我不完全确定问题出在哪里Python代码函数未正确更新变量,python,function,variables,Python,Function,Variables,我试图做一个简单的基于文本的房间游戏,你可以从一个房间到另一个房间,它会给你一个描述,你可以四处走动。输入1后,输出相应工作。在它要求您再次输入并且您输入了一个方向之后,程序什么也不做。 我在前面的代码中定义了不同的room1、room2等。我认为这与我的方向函数和xy变量有关,但我不完全确定问题出在哪里 import time import sys x=1 y=1 def direction(): global x global y prompt = input("\
import time
import sys
x=1
y=1
def direction():
global x
global y
prompt = input("\nChoose a direction using AWSD:\n")
if prompt == "a" or prompt == "A":
x -= 1
elif prompt == "s" or prompt == "S":
y -= 1
elif prompt == "w" or prompt == "W":
y += 1
elif prompt == "d" or prompt == "D":
x += 1
def stutter(text):
for c in text:
print(c, end="")
sys.stdout.flush()
time.sleep(.04)
stutter(""""You wake up in a dark room with a rusty iron door. There is a small
circular window casting a dim light across the room. Theres two doors leading
out. One forward and one to the right.""")
direction()
if x==1 and y==1:
stutter(room1)
direction()
elif x==1 and y==2:
stutter(room2)
direction()
elif x==1 and y==3:
stutter(room3)
direction()
elif x==2 and y==1:
stutter(room4)
direction()
elif x==2 and y==2:
stutter(room5)
direction()
elif x==2 and y==2:
stutter(room6)
direction()
elif x==3 and y==1:
stutter(room7)
direction()
elif x==3 and y==2:
stutter(room8)
direction()
elif x==3 and y==3:
stutter(room9)
direction()
else:
stutter("You hit a wall")
direction()
您必须引入一个
while
循环,如下所示:
while(True):
if x==1 and y==1:
stutter(room1)
elif x==1 and y==2:
stutter(room2)
elif x==1 and y==3:
stutter(room3)
elif x==2 and y==1:
stutter(room4)
elif x==2 and y==2:
stutter(room5)
elif x==2 and y==2:
stutter(room6)
elif x==3 and y==1:
stutter(room7)
elif x==3 and y==2:
stutter(room8)
elif x==3 and y==3:
stutter(room9)
else:
stutter("You hit a wall")
direction()
否则它只请求一次,因为不再调用stutter()
另一方面,你应该试着理解数组,可能还有dict,因为它们可以摆脱那一长串的坐标检查。整个
如果elif
部分必须包含在一个无限循环中,direction()
调用必须被删除,除了第一个(也包括在循环中)。