#pragma once #include class NewPlayerT { public: virtual ~NewPlayerT() = default; NewPlayerT(std::string newName); std::string Name() const; int Defense() const; int HP() const; virtual void ChangeHP(int amount); virtual void Fight(NewPlayerT * other) = 0; virtual std::string Role() const = 0; protected: void SetDefense(int newDefense); private: std::string name; int hp{10}; int defense{6}; }; class FighterT : public NewPlayerT { public: FighterT(std::string name); void Fight(NewPlayerT * other); std::string Role() const override; int Strength() const; private: int strength{100}; }; class WizardT : public NewPlayerT { public: WizardT(std::string name); void Fight(NewPlayerT * other); std::string Role() const override; int Magic() const; private: int magic{222}; }; class MonkT : public NewPlayerT { public: MonkT(std::string name); void Fight(NewPlayerT * other); virtual void ChangeHP(int amount); std::string Role() const override; int Patience() const; private: int patience {1000}; };