@dada_arewnd

Почему с отрицательным кол-во хп персонаж жив?

Есть персонаж и у него изначально 15 HP, также есть монстр который сносит 10 HP.
if cursor.execute(f"SELECT HP FROM users WHERE id = {id}").fetchone()[0] <= 0:
    print("Вы погибли")
if cursor.execute(f"SELECT HP FROM users WHERE id = {id}").fetchone()[0] >= 1:
    cursor.execute(f"UPDATE users SET HP = HP - {attack_1} WHERE id = {id}")
    print(f'Вам снесли 10 HP! \nВаше здоровье {hp}')

Должно быть примерно так:
-Первый удар: Осталось 5 HP
-Второй удар:Вы погибли
Как это происходит:
-Первый удар: Осталось 5 HP
-Второй удар: Осталось -5 HP
-Третий удар: Вы погибли
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@jeka777jjj
Начинающий Python разработчик
Все правильно. Сначала идет проверка, что хп больше-равно 1. В случае с 5 это истина, потом удар и минус 10 хп, затем сообщение f'Вам снесли 10 HP! \nВаше здоровье {hp}. Нужно сделать (вкратце) так.

if hp >= 1:
    if hp - attack >= 1:
        cursor.execute(f"UPDATE users SET HP = HP - {attack_1} WHERE id = {id}")
        print(f'Вам снесли 10 HP! \nВаше здоровье {hp}')
    else:
        hp = 0
        print("Вы погибли")
else:
    cursor.execute(f"SELECT HP FROM users WHERE id = {id}").fetchone()[0] <= 0:
    print("Вы погибли")
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
1. Включи логику. Ты сначала проверяешь, умер ли персонаж, а потом наносишь урон. Отсюда и наблюдаемое поведение.
2. Никогда не используй f-строки для SQL запросов, освой parametrized queries.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект