У меня есть функция if в цикле while, но она либо игнорирует ее, либо не прерывается - PullRequest
0 голосов
/ 13 декабря 2018
while True:
    print("We have entered in the open sea, but the current is pushing us. 
            We can veer left and"
              +"\nmiss the storm, or go straight through it. Type [left] or 
              [straight] exactly as it is in the box.")
    turnChoice = input()

    if turnChoice == "left":
        food = food - 2
        time.sleep(2)
        print("You missed the storm, but you lost a little food. Your 
            current 
          food level is 5. If you let it go to zero, "
          +"\nyour health will decrease.")
        break
    if turnChoice == "straight":
        time.sleep(2)
        random.randint(1,5)
        break
    if random == 1:
        food = food - 2
        print("You tried to go through the storm, but the ship was damaged. 
            You lost some food.")
        break
    if random == 2:
        print("The ship made it through the storm without taking damage 
                somehow. 
            You did not loose any supplies or health.")
        break
    if random == 3:
        print("The ship made it through. It made a lot of noise, but no 
            supplies were lost.")
        break
    if random == 4:
        health = health - 20
        print("The ship made it through, but there was damage. While you 
            were inside the ship, a stack of barrels fell on you."
            +"\n You took some damage, receiving a concussion and fracturing 
            your arm. But you will live.")
        break
    if random == 5:
        water = water - 2
        print("You made it through the storm, but some water barrels were 
            lost to the storm. ")
        time.sleep(2)
        print("Here is your water status, don't let it get to zero: ")
        print(water)
        break

    if turnChoice not in("left", "straight"):
        print("Invalid input, please try again.")

Извините, если формат неверный, я новичок в stackoverflow.Я программирую игру в слова для своего английского проекта.Я пытаюсь запустить эти разные функции if внутри цикла while, но он либо игнорирует их, либо просто зацикливает всю функцию.Если вы выбираете «прямой», то он должен потянуть генератор случайных чисел и выбрать случайный сценарий.Если вы выберете «налево», это только уменьшит вашу еду.Функция «левый» работает, а «прямой» - нет.Кроме того, я пытаюсь заставить его сломаться после того, как он проходит через функцию 'left' или функцию 'direct', но я не уверен, как это сделать из-за функций 'if'.Это запрограммировано на Pycharm, и я считаю, что это Python 3.7.0.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Две вещи:

  1. Перерыв используется для выхода из цикла while.Для python оператор if будет выходить в соответствии с отступом.Так что для того, чтобы бегать по прямой и продолжать свои сценарии, вы просто устраняете разрыв после прямой.

  2. random.randint дает вам случайное целое число от 1 до 5 включительно, но не сохраняет его в переменной, которую вы используете для проверки сценариев.Так что вам нужно хранить его в случайном порядке.«Случайный».part просто захватывает эту функцию из импортированного вами случайного модуля.

Это приведет к выходу из оператора if, а не из цикла while, когда они набирают direct , а также присваиваетслучайным образом.Эти два изменения исправили это для меня.

if turnChoice == "straight":
    time.sleep(2)
    random = random.randint(1,5)
if random == 1: #rest of code
0 голосов
/ 13 декабря 2018

Ваша строка random.randint(1,5) не присваивается переменной, поэтому ни один из операторов if не запускается.Попробуйте сделать что-то вроде

rnd = random.randint(1,5)

if rnd == 1:
    # stuff here
if rnd == 2:
    # stuff here
...