Почему мой цикл for не вычитает из переменной? - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь сделать очень простую текстовую боксерскую игру в качестве тренировочного упражнения.Я хочу, чтобы каждый проход через цикл наносил удар и наносил случайное количество урона.Каждый удар будет поразить случайную часть противника.Однако, урон никогда не вычитается из первоначальной суммы.Где я неправ?

Вот мой код и вывод за пару раундов.

#starting stats
nose = 100
jaw = 100
face = 100
head = 100
hp = nose + jaw + face + head
moral = 200
import random

#fight
for fight in range(10):
    if hp <= 0:
        print("DING DING DING\nKNOCK OUT\nYOU ARE THE WINNER!!!!!!")
    if hp <= 25:
        moral - 25
        print("He's losing moral!")
    if moral <=0:
        hp - 75
        print("He's about to KO!!!")
    if hp> 0:
        print("=========\nMORAL:{0}\nHP:{1}\nNOSE:{2}\nJAW:{3}\nFACE:{4}\nHEAD:{5}\n=========".format(moral, hp, nose, jaw, face, head))
        move = input('TYPE "P" TO THOW A PUNCH!!!')
        if move == "p" or "P" or "PUNCH":
            part = int(random.randint(1,4))
            damage = int(random.randint(1, 100))
            if part == 1:
                print("PUNCH TO THE NOSE!!!")
                nose - damage
            elif part == 2:
                print("PUNCH TO THE JAW!!!")
                jaw - damage
            elif part == 3:
                print("PUNCH TO THE FACE!!!")
                face - damage
            elif part == 4:
                print("PUNCH TO THE HEAD!!!")
                head - damage

Вывод:

=========
MORAL:200
HP:400
NOSE:100
JAW:100
FACE:100
HEAD:100
=========
TYPE "P" TO THOW A PUNCH!!!P
PUNCH TO THE HEAD!!!
=========
MORAL:200
HP:400
NOSE:100
JAW:100
FACE:100
HEAD:100
=========
TYPE "P" TO THOW A PUNCH!!!P
PUNCH TO THE HEAD!!!
=========
MORAL:200
HP:400
NOSE:100
JAW:100
FACE:100
HEAD:100
=========
TYPE "P" TO THOW A PUNCH!!!

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

hp - 75 никогда не сбрасывает переменную.Учитывая это, hp всегда будет глобальным значением 400.Используйте для этого синтаксис -=:

hp -= 75
0 голосов
/ 13 июня 2018

Заявления типа moral - 25 вообще ничего не делают;они вычитают одно значение из другого, но затем отбрасывают результат.Вам действительно нужно присвоить результат обратно вашей переменной:

moral = moral - 25

, которую можно сократить до

moral -= 25
0 голосов
/ 13 июня 2018

Вы забыли сохранить результат.Попробуйте это:

    hp = hp - 75

Еще лучше, используйте сокращение:

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