Давайте создадим текстовую игру "Гладиаторский поединок" на основе вашего описания. Вот пошаговая реализация класса Gladiator, включая все необходимые методы и логику боя между двумя гладиаторами.
import time
import random
class Gladiator:
def __init__(self, name, hp, armor, damage):
self.name = name
self.hp = hp
self.armor = armor
self.damage = damage
print(f"Поприветствуйте нового гладиатора {self.name}!")
print(self)
def __str__(self):
return f"Гладиатор {self.name}: Жизни: {self.hp}, Броня: {self.armor}, Урон: {self.damage}"
def attack(self, enemy):
print("Атака!")
print(f"Гладиатор {self.name} атакует Гладиатора {enemy.name}.")
# Расчет урона
enemy.armor -= self.damage
if enemy.armor < 0:
enemy.hp += enemy.armor # Отнимаем негативную броню от жизней
enemy.armor = 0
if enemy.hp <= 0:
print(f"Гладиатор {enemy.name} пал от меча Гладиатора {self.name}.")
else:
print(f"После удара у гладиатора {enemy.name} осталось {enemy.armor} брони и {enemy.hp} жизней.")
# Создаем двух гладиаторов
gladiator1 = Gladiator("Спартак", 100, 50, 30)
gladiator2 = Gladiator("Кир", 100, 40, 25)
# Начинаем бой
state = True
while state:
time.sleep(1) # Задержка в одну секунду
number = random.randint(1, 2) # Генерация случайного числа от 1 до 2
if number == 1:
gladiator1.attack(gladiator2)
else:
gladiator2.attack(gladiator1)
# Проверяем состояние здоровья гладиаторов
if gladiator1.hp <= 0 or gladiator2.hp <= 0:
state = False
print("Поединок завершен!")
Что делает этот код:
Импорт необходимых модулей: Используются модули
timeдля задержки между атаками иrandomдля генерации случайного числа.Класс Gladiator:
- Конструктор (
__init__) принимает параметры имени, жизней, брони и урона, и выводит приветственное сообщение. - Метод
__str__возвращает строку с информацией о гладиаторе. - Метод
attackреализует логику атаки. Он уменьшает броню противника на урон. Если броня становится отрицательной, то она вычитает недостающую часть из жизней противника. В зависимости от состояния жизней выводится соответствующее сообщение.
- Конструктор (
Создание гладиаторов: Создаются два экземпляра класса
Gladiator.Цикл боя: Бой продолжается, пока у одного из гладиаторов есть жизни, и поочередно вызываются атаки.
Теперь вы можете запускать игру и наблюдать, как гладиаторы сражаются друг с другом! Если у вас возникнут дополнительные вопросы или потребуется сделать улучшения, не стесняйтесь обращаться.
