Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Лабораторная работа №3
- Шильцин Влад
- Придумайте набор предметов (минимум 3),
- у которых можно выделить общие свойства.
- Создайте абстрактный класс, который будет
- описывать придуманные предметы в общем (минимум 3 функции).
- Наследуйте от него классы, которые будут описывать каждый из предметов.
- Покажите, как совершать операции над всеми классами, используя полиморфизм.
- */
- #include <iostream>
- #include <Windows.h>
- class Enemy
- {
- public:
- virtual void hurt(int damage) { printf_s("Enemy gets %d damage...\n", damage); }
- virtual void walk() { std::cout << "Enemy is walking...\n"; }
- virtual void searching() { std::cout << "Enemy is searching...\n"; }
- virtual void attack() { std::cout << "Enemy is attacking...\'n"; }
- };
- class Wyvern : public Enemy
- {
- public:
- void hurt(int damage) override { printf_s("Wyvern gets %d damage, but resists 20 damage...\n", damage); }
- void walk() override { std::cout << "Wyvern is flying...\n"; }
- void searching() override { std::cout << "Wyvern is searching...\n"; }
- void attack() override { std::cout << "Wyvern is attacking...\n"; }
- };
- class Worm : public Enemy
- {
- public:
- void hurt(int damage) override { printf_s("Worm gets %d damage, but resists 2 damage...\n", damage); }
- void walk() override { std::cout << "Worm is crawling...\n"; }
- void searching() override { std::cout << "Worm is searching for food...\n"; }
- void attack() override { std::cout << "Worm is trying to attack, but it is impossible...\n"; }
- };
- class Bunny : public Enemy
- {
- public:
- void hurt(int damage) override { printf_s("Bunny gets %d damage, but resists 2000000000 damage...\n", damage); }
- void walk() override { std::cout << "Bunny is driving a car...\n"; }
- void searching() override { std::cout << "Bunny is searching for fresh meat...\n"; }
- void attack() override { std::cout << "Bunny is attacking and world gets destroyed...\n"; }
- };
- class Player
- {
- public:
- Player(int damage) { this->damage = damage; }
- void attack(Enemy* enemy) { enemy->hurt(damage); }
- private:
- int damage;
- };
- int main()
- {
- Wyvern wyvern;
- Worm worm;
- Bunny bunny;
- Player* player = new Player(100);
- player->attack(&wyvern);
- player->attack(&worm);
- player->attack(&bunny);
- bunny.walk();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement