Функция кода Python не обновляет переменные должным образом - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь сделать вначале простую текстовую игру, основанную на комнате, где вы можете переходить из комнаты в комнату, и она дает вам описание, и вы можете ходить вокруг.после 1 входа выход работает соответственно.После того, как он попросит вас ввести снова, и вы введете направление, программа ничего не делает.Я определил каждый из различных room1, room2 и т. Д. Ранее в коде.Я думаю, что это связано с моей функцией направления и переменными xy, но я не совсем уверен, в чем проблема

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()

1 Ответ

0 голосов
/ 20 октября 2018

Вы должны ввести цикл 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() больше не вызывается.

Для sidenote вы должныпопытайтесь понять массивы и, возможно, диктовки, потому что они могли бы избавиться от этого длинного списка проверки координат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...