@Kintazavr

Проблемы с кодом на Python?

Пробовал написать текстовую игру на Python, вроде все работает как надо и ошибок пока не выдавал. Но при вводе числа ( 1 или 2 ) он просит ввести число заного не выполняя код( или выполняя я не очень понял)
Программированием занимаюсь ~1 мес.
Вот код:
import random
print("Добро пожаловать")
print("На вас напали, мой милорд!")
print("Вы достаете свой меч из ножен и кидаетесь в бой с врагом")
# жизни
health = 100
health_troll = 150
# кол-во троллей
trolls = 1
# урон
player_dmg = int(random.randint(10, 15))
troll_dmg = int(random.randint(30, 48))
# крит урон
player_crt_dmg = (player_dmg * 2)
troll_crt_dmg = (troll_dmg * 3)
# шанс крита
player_chance_to_crit = int(random.randint(1, 100))
troll_chance_to_crit = int(random.randint(1, 100))
# шанс похилиться\атаковвать
chance_to_heal = int(random.randint(1, 100))
chance_to_attack = int(random.randint(1, 100))
heal = int(random.randrange(20))
print(health, " это ваше здоровье, а", player_chance_to_crit, " это ваш шанс крит. атаки..."\
      "Но по ходу игры они могут меняться\n")
player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
while health > 0:
    while health_troll > 0:
        # игрок бьет
        if player == int(1):
            # если попадает
            if chance_to_attack >= 35:
                # если критует player
                if player_chance_to_crit >= 65:
                    health_troll -= player_crt_dmg
                    print("Рассекающим ударом вы нанесли ", player_crt_dmg, " по троллю" \
                          "и у него осталось ", health_troll)
                    # eсли критует troll
                    if troll_chance_to_crit >= 65:
                        health -= troll_crt_dmg
                        print("Троль ловко парировал вашу атаку и контр-атаковал на ", troll_crt_dmg, \
                              "у вас осталось", health)
                    # если не критует troll
                    if troll_chance_to_crit <= 65:
                        health -= troll_dmg
                        print("Троль ударил вас сокрушительной атакой на ", troll_dmg, "урона" \
                              "у вас осталось", health)
                # смена статов

                # если не критует player
                if player_chance_to_crit <= 65:
                    health_troll -= player_dmg
                    print("Вы оскорбили честь и достоинство тролля и нанесли ", player_dmg, \
                          " но осталось еще ", health_troll)
                    # eсли критует troll
                    if troll_chance_to_crit >= 65:
                        health -= troll_crt_dmg
                        print("Троль ловко парировал вашу атаку и контр-атаковал на ", troll_crt_dmg, \
                              "у вас осталось", health)
                    # если не критует troll
                    if troll_chance_to_crit <= 65:
                        health -= troll_dmg
                        print("Троль ударил вас сокрушительной атакой на ", troll_dmg, "урона" \
                              "у вас осталось", health)
            # cмена статов
            player_dmg = int(random.randint(10, 15))
            troll_dmg = int(random.randint(30, 48))
            player_chance_to_crit = int(random.randint(1, 100))
            troll_chance_to_crit = int(random.randint(1, 100))
            player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
            # если не попадает
            if chance_to_attack <= 35:
                print("Вы промазали. Такое иногда случается")
                # eсли критует troll
                if troll_chance_to_crit >= 65:
                    health -= troll_crt_dmg
                    print("Троль ловко парировал вашу атаку и контр-атаковал на ", troll_crt_dmg, \
                          "у вас осталось", health)
                # смена статов

                    player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
                # если не критует troll
                if troll_chance_to_crit <= 65:
                    health -= troll_dmg
                    print("Троль ударил вас сокрушительной атакой на ", troll_dmg, "урона" \
                          "у вас осталось", health)
            # смена статов
            player_dmg = int(random.randint(10, 15))
            troll_dmg = int(random.randint(30, 48))
            player_chance_to_crit = int(random.randint(1, 100))
            troll_chance_to_crit = int(random.randint(1, 100))
            player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
        # игрок хилится
        if player == int(2):
            if chance_to_heal >= 50:
                health += heal
            if chance_to_attack >= 90:
                # eсли критует troll
                if troll_chance_to_crit >= 65:
                    health -= troll_crt_dmg
                    print("Троль ловко парировал вашу атаку и контр-атаковал на ", troll_crt_dmg, \
                          "у вас осталось", health)
                    # смена статов
                player_dmg = int(random.randint(10, 15))
                troll_dmg = int(random.randint(30, 48))
                player_chance_to_crit = int(random.randint(1, 100))
                troll_chance_to_crit = int(random.randint(1, 100))
                player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
                # если не критует troll
                if troll_chance_to_crit <= 65:
                    health -= troll_dmg
                    print("Троль ударил вас сокрушительной атакой на ", troll_dmg, "урона" \
                              "у вас осталось", health)
                # смена статов
                player_dmg = int(random.randint(10, 15))
                troll_dmg = int(random.randint(30, 48))
                player_chance_to_crit = int(random.randint(1, 100))
                troll_chance_to_crit = int(random.randint(1, 100))
                player = (input("Введите 1( атаковать ) или 2( хилиться )\n"))
    trolls += 1
print("YOU DIED\n")
print("Вы убили ", trolls, "врагов")
print(input("\nEnter для выхода"))

45e96e5a4a374a0491c57ddbd03920ee.png

Так же хотелось бы сократить код

  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
x67
@x67
А зачем нужна конструкция
if player==int(1):
когда можно
if player==1:
Ну и попробуйте предварительно инициализировать переменную
player=0
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы