Тема: Потрібно редагувати код
Ось завдання
Є два види персонажів:
- Герої (Г, що володіють наступними характеристиками: сила, швидкість руху, шкода, яку
може нанести, шкода, яку отримує.
- Антигерої (А), що володіють наступними характеристиками: сила, здатність допомогти
представнику свого виду.
(характеристики студент може змінювати самостійно, але слід залишити базові)
Спроектувати та реалізувати функції, які передбачають взаємодію наступних персонажів:
Г + Г
А + А
Г + А
А + Г
Ось код С++
#include <iostream>
// Клас Герой
class Hero {
private:
int strength;
int speed;
int damage;
int received_damage;
public:
// Конструктори
Hero() : strength(10), speed(5), damage(5), received_damage(0) {}
Hero(int s, int sp, int d, int rd) : strength(s), speed(sp), damage(d), received_damage(rd) {}
// Методи атаки та отримання ушкоджень
void attack(Hero& enemy) {
enemy.receive_damage(damage);
}
void receive_damage(int d) {
received_damage += d;
}
// Методи для отримання значень полів
int get_strength() const {
return strength;
}
int get_speed() const {
return speed;
}
int get_damage() const {
return damage;
}
int get_received_damage() const {
return received_damage;
}
};
// Клас Антигерой
class Antihero {
private:
int strength;
int help;
public:
// Конструктори
Antihero() : strength(5), help(10) {}
Antihero(int s, int h) : strength(s), help(h) {}
// Метод допомоги
void provide_help(Hero& ally) {
ally.receive_damage(-help);
}
// Методи для отримання значень полів
int get_strength() const {
return strength;
}
int get_help() const {
return help;
}
};
// Функція для взаємодії Героя та Антигероя
void hero_antihero_interaction(Hero& hero, Antihero& antihero) {
hero.attack(antihero); // Герой атакує Антигероя
antihero.provide_help(hero); // Антигерой допомагає Герою
}
// Функція для взаємодії Героїв
void hero_hero_interaction(Hero& hero1, Hero& hero2) {
hero1.attack(hero2);
hero2.attack(hero1);
}
// Функція для взаємодії Антигероїв
void antihero_antihero_interaction(Antihero& antihero1, Antihero& antihero2) {
// Взаємодія Антигероїв відсутня в початковій реалізації, можна додати її у цю функцію
// Наприклад, дописавши наступний код:
antihero1.provide_help(antihero2);
antihero2.provide_help(antihero1);
}
int main() {
// Створення об'єктів Героя та Антигероя
Hero hero1(20, 10, 10, 0);
Hero hero2(15, 8, 8, 0);
Antihero antihero1(7, 15);
Antihero antihero2(10, 5);
// Взаємодія перших двох Героїв
hero_hero_interaction(hero1, hero2);
// Взаємодія Героя та Антигероя
hero_antihero_interaction(hero1, antihero1);
// Взаємодія двох Антигероїв
antihero_antihero_interaction(antihero1, antihero2);
// Виведення статистики ушкоджень
std::cout << "Hero 1 received " << hero1.get_received_damage() << " damage.\n";
std::cout << "Hero 2 received " << hero2.get_received_damage() << " damage.\n";
std::cout << "Antihero 1 received " << antihero1.get_received_damage() << " damage.\n";
std::cout << "Antihero 2 received " << antihero2.get_received_damage() << " damage.\n";
return 0;
};