При разработке компьтерных игр зачастую создаётся очень сложная система классов. В этой задаче Вам будет необходимо сделать небольшую заготовку, которую потом можно будет использовать для создания своей игры. Реализуйте класс Weapon для оружия, который при инициализации должен принимать имя оружия name, наносимый урон damage, а также радиус, на котором оружие может достать до врага – range. В классе Weapon должны быть реализованы следующие методы: hit(actor, target) – удар персонажем actor персонажа target. Метод должен проверять, жив ли персонаж target, если нет, то выводить сообщение «Враг уже повержен», иначе должна проводится проверка расстояния от actor до target. Если расстояние больше range оружия, тогда надо выводить сообщение «Враг слишком далеко для оружия ». В случае, если target жив и оружие имеет достаточный range, вывести сообщение «Врагу нанесен урон оружием в размере » и нанести урон target. приведение к строке – при приведении к строке должно возвращаться имя оружия. Реализуйте класс BaseCharacter для создания базовых персонажей, который при инициализации должен принимать pos_x и pos_y – позицию персонажа в мире, hp – количество жизней персонажа. Класс BaseCharacter должен реализовывать методы: move(delta_x, delta_y) – для перемещения персонажа на delta_x и delta_y в игровом мире. is_alive() – проверка, жив ли персонаж. Возвращает True, если жив, иначе – False. get_damage(amount) – убавляет количество жизней персонажа на amount. При достижении 0 или отрицательного значения персонаж считается мёртвым. get_coords() – возвращает кортеж с текущими координатами персонажа. Реализуйте класс BaseEnemy для создания противников, который расширяет класс BaseCharacter. При инициализации он должен принимать pos_x и pos_y – позицию персонажа в мире, weapon – оружие, hp – количество жизней персо
нажа. Класс BaseEnemy должен реализовывать методы: attack(target) – атаковать персонажа target с помощью оружия. Если персонаж target мёртв, то вывести сообщение «Цель уже повержена». В случае успешной атаки вызывать метод hit у переданного оружия. Реализуйте также класс Player, который также расширяет класс BaseCharacter. У класса Player должен быть атрибут weapon – оружие персонажа. Реализуйте метод attack(target), который позволяет персонажу атаковать цель target с помощью оружия. Если персонаж target мёртв, вывести сообщение «Цель уже повержена». В случае успешной атаки вызывать метод hit у своего оружия. В случае, если у персонажа закончатся жизни, вывести сообщение о его смерти.
Пример использования классов:
sword = Weapon("Меч", 10, 2) enemy = BaseEnemy(0, 0, sword, 20) player = Player(0, 0, 100, sword) player.attack(enemy) # Врагу нанесен урон оружием Меч в размере 10 enemy.attack(player) # Врагу нанесен урон оружием Меч в размере 10 player.move(1, 1) print(player.get_coords()) # (1, 1) print(enemy.is_alive()) # True player.get_damage(110) print(player.is_alive()) # False
нажа. Класс BaseEnemy должен реализовывать методы: attack(target) – атаковать персонажа target с помощью оружия. Если персонаж target мёртв, то вывести сообщение «Цель уже повержена». В случае успешной атаки вызывать метод hit у переданного оружия. Реализуйте также класс Player, который также расширяет класс BaseCharacter. У класса Player должен быть атрибут weapon – оружие персонажа. Реализуйте метод attack(target), который позволяет персонажу атаковать цель target с помощью оружия. Если персонаж target мёртв, вывести сообщение «Цель уже повержена». В случае успешной атаки вызывать метод hit у своего оружия. В случае, если у персонажа закончатся жизни, вывести сообщение о его смерти.
Пример использования классов:
sword = Weapon("Меч", 10, 2)enemy = BaseEnemy(0, 0, sword, 20)
player = Player(0, 0, 100, sword)
player.attack(enemy) # Врагу нанесен урон оружием Меч в размере 10
enemy.attack(player) # Врагу нанесен урон оружием Меч в размере 10
player.move(1, 1)
print(player.get_coords()) # (1, 1)
print(enemy.is_alive()) # True
player.get_damage(110)
print(player.is_alive()) # False