2013-09-22 3 views
-1

Это мой первый пост в stackoverflow, и я только спрашиваю, потому что я действительно застрял. Хороший друг и я пытаемся создать простую текстовую игру (давайте послушаем ее в 80-е годы). Это мой первый день, в основном, с python, и я столкнулся с проблемой. У игрока есть выбор, чтобы взять кинжал или нет. Позже я хочу, чтобы это решение вступило в игру. Кроме того, я не знаю, как проверить и посмотреть, что сказал игрок! Вот мой код Примечание: он падает в состоянии, когда он находится прямо сейчас, главным образом из-за того, что я спотыкаюсь о попытке устранить эту проблему.Как я могу проверить, что пользователь вводит в другую функцию?

def start(): 
     print("You wake up in a dank tunnel reeking of death and decomposition,") 
     print("you have no weapons to defend yourself with.") 
     time.sleep(1) 
     print("\n") 
     print("You head north and find yourself at a four way tunnel.") 
     print("\n") 
     print("Down the west tunnel, you hear sounds which could have only come") 
     print("from hell itself. With every sound uttered, your fear grows.") 
     time.sleep(1) 
     print("\n") 
     print("Down the north tunnel, there is a room with a glimmering object") 
     print("lying on the ground.") 
     time.sleep(1) 
     print("\n") 
     print("Down the East tunnel, there appears to have been a cave in.") 
     time.sleep(1) 
     print("\n") 
     print("The South tunnel is the way you just came. \n") 
     time.sleep(1) 
     while True: 
      r3 = input("Which way would you like to go?\n") 
      if r3 == "west" or r3 == "West": 
       print("The sounds are becoming Louder, do you continue or head back?") 
       while True: 
        w1 = input("") 
        if w1 == "continue" or w1 == "Continue" or w1 == "west": 
          print("You continue further on...") 
          time.sleep(2.5) 
          westtunnel() 
        elif w1 == "head back" or w1 == "Head Back" or w1 == "back" or w1 == "Back": 
         print("\n") 
         print("The voices congregate behind you. No way your going back that way!\n") 
         time.sleep(1) 
         westtunnel() 
        else: 
         print("\n") 
         print("You couldn't possibly do anything else.\n") 
         time.sleep(1) 
         print("Greater minds prevail and you continue westward...\n") 
         time.sleep(2) 
         westtunnel() 
      elif r3 == "north" or r3 == "North": 
       print("You find a rusty dagger on the floor, stained with blood.") 
       print("Do you want to pick up the dagger?") 
       print("1: Yes, that seems useful!") 
       print("2: No, I'm a bit of a pacifist you see.") 
       while True: 
        pd = input("") 
        if pd == "1": 
         print("You slowly picked up the dagger.") 
         number = int(pd) 
         break 
        else: 
         print("You left the dagger. All alone.") 
         number = int(pd) 
         break 
       print("You can go only go back the way you came.\n") 
       time.sleep(1) 
       print("You head back to the four way tunnel.") 
      elif r3 == "east" or r3 == "East": 
       print("\n") 
       print("You can not go that way, there are rocks there. We told you this.\n") 
       time.sleep(1) 
       print("You go back to the four way tunnel") 
      elif r3 == "south" or r3 == "South": 
       print("\n") 
       print("This is the room you awoke in, there is nothing of interest.\n") 
       time.sleep(1) 
       print("You head back to the four way tunnel") 
      else: 
       print("\n") 
       print("You run into a corner, you hurt yourself in confusion. \n") 
       time.sleep(1) 
       print("You stumble back to the four way.") 

def ladder(): 
    print("Do you have a dagger?!") 
    number = pd 
    if number == "1": 
     print("Good you have it!") 
     start() 
     input("") 
    else: 
     print("awh...no dagger for you...") 
     start() 
     input("") 
if __name__ == '__main__': 
    menu() 
+2

Можете ли вы сократить этот код, чтобы сохранить только то, что имеет значение? – arshajii

+0

Одна вещь, которую я заметил, это то, что вы не используете в своем коде множество операторов break. Таким образом, любой сценарий, который был воспроизведен, продолжал бы играть, если он не называет другой сценарий. Это на самом деле похоже на рекурсивный код и в зависимости от того, как долго пользователь играет в вашу игру, это может вызвать «переполнение стека» (каламбур). – smac89

ответ

3

Изучите классы Python.

Возможно, вы захотите создать объект Game State, который содержит результаты решений, принятых в ходе игры. Затем, позже, когда результаты этих решений имеют значение, вы проверяете состояние.

Вам нужно будет сохранить ссылку на этот объект состояния игры во время основного игрового цикла. Однако, сохраняя его в одном объекте, вся информация о состоянии организована, а не сохраняется ссылка на несколько разрозненных переменных.

+0

Я немного смущен тем, как создать объект состояния игры. Я попытался найти это в Интернете и нашел в лучшем случае некоторые расплывчатые статьи. Однако я ценю вашу помощь! – user2804885

Смежные вопросы