Простая функция не интернирование - PullRequest
0 голосов
/ 23 апреля 2019

Я пишу простую текстовую игру и написал простую боевую систему. Система работает как камень-ножницы-бумага. Он будет повторять цикл, и даже не будет проходить первую напечатанную строку. Спасибо!.

Это на Python3

Я попытался сделать это целым числом, строкой, если к elif и обратно, и многими другими вещами. Спасибо!

def combat(ehealth,ename):
    while (ehealth > 0):
        playerhit=int(input("Would you like to [1] Stab, [2] Swipe, or [3] Bash?   "))
        comhit=random.uniform(1,3)
        if playerhit==1:
            if comhit==1:
                print("The", ename, "parryed the attack")
            elif comhit==2:
                print("The", ename, "blocked the attack")
            elif comhit==3:
                ehealth=ehealth-1
                print("You hit the", ename,"!")
        elif playerhit==2:
            if comhit==1:
                ehealth=ehealth-1
                print("You hit the", ename,"!")
            elif comhit==2:
                print ("The", ename, "parryed the attack")
            elif comhit==3:
                print("The", ename, "blocked the attack")
        elif playerhit==3:
            if comhit==1:
                print("The", ename, "blocked the attack")
            elif comhit==2:
                ehealth=ehealth-1
                print("You hit the", ename,"!")
            elif comhit==3:
                print("The", ename, "blocked the attack")

Я ожидал, что функция завершит цикл, когда "ehealth" достигнет нуля

Он не пропускает первый напечатанный оператор, так как вводит цикл снова и снова.

Еще раз спасибо, Стивен

1 Ответ

3 голосов
/ 23 апреля 2019
random.uniform(1,3)

Это проблема.Возвращает случайное число с плавающей точкой, а не int.Вы никогда не достигнете ни одного из своих вложенных операторов if.

Попробуйте random.choice(range(1,4))

Или еще лучше,

random.randint(1, 3)
...