Как непрерывно вычитать из числа - PullRequest
0 голосов
/ 13 июля 2020

Новичок python пользователь здесь. Я пишу код для атаки basi c в rpg, и он выглядит так:

import random
class attack:

    health = 300

    for i in range(1):
        if (random.uniform(0, 10)) <= int(8.2):
            health = health - 50
            print("Your attack hit.\n" + "The monster's health is at " + str(health))
        else:
            print("Your attack missed.\n" + "The monster's health is at " + str(health))

Когда происходит атака, печатается вот что:

Your attack hit.
The monster's health is at 250

Я пытаюсь непрерывно вычитать пустошь, пока она не опустится до нуля. Как мне написать это так, чтобы 50 непрерывно вычиталось из 300 всякий раз, когда я запускаю программу (вместо того, чтобы просто оставаться на 250)?

Ответы [ 4 ]

2 голосов
/ 13 июля 2020

Вы можете использовать while l oop - он будет работать до тех пор, пока не будет выполнено условие (в данном случае, пока здоровье не станет 0):

while health > 0:
    if (random.uniform(0, 10)) <= int(8.2):
            health = health - 50
            print("Your attack hit.\n" + "The monster's health is at " + str(health))
        else:
            print("Your attack missed.\n" + "The monster's health is at " + str(health))
2 голосов
/ 13 июля 2020

Ваш l oop выполняется только один раз.

for i in range(1):

Если вы хотите, чтобы он работал до тех пор, пока health не станет 0, вам понадобится while l oop:

while health > 0:
2 голосов
/ 13 июля 2020

Используйте while l oop как

while health > 0:
    if (random.uniform(0, 10)) <= int(8.2):
        health = health - 50
        print("Your attack hit.\n" + "The monster's health is at " + str(health))
    else:
         print("Your attack missed.\n" + "The monster's health is at " + str(health))

https://docs.python.org/3/reference/compound_stmts.html#the-while-statement

0 голосов
/ 13 июля 2020

Лучше, если вы используете функцию вместо класса, и вы можете использовать время l oop, чтобы продолжать атаку, чтобы здоровье меньше 0.

import random
def attack():
    health = 300
    while health > 0:
        if (random.uniform(0, 10)) <= int(8.2):
             health -= 50
             print("Your attack hit.\n" + "The monster's health is at " + str(health))
        else:
             print("Your attack missed.\n" + "The monster's health is at " + str(health))
attack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...