/* Program Name: Videogamer Process: designing a set of classes to represent types of characters that might be seen in a video game. Function Input/Parameters: ??? Function Output/Parameters: ??? Function Output/Returned: ??? Device Input/Device: ??? Device Output/Monitor: ??? Dependencies: ??? */ #include #include #include #include #include #include #include #include using namespace std; // class definitions class GameCharacter { private: // protected: double characterHealth; string characterName; int characterLevel; public: GameCharacter() { // characterHealth = 0.0; characterName = "My Character"; characterLevel = 1; } GameCharacter(double health, string name, int level) { // characterHealth = health; characterName = name; characterLevel = level; } // ~GameCharacter() // { // // // } // virtual ~GameCharacter() = 0; virtual ~GameCharacter() { return; // cout << "This not works?" << endl; } // accessor functions double getCharacterHealth() { return characterHealth; } string getCharacterName() { return characterName; } int getCharacterLevel() { return characterLevel; } // mutator functions void setCharacterHealth(double setHealth) { characterHealth = setHealth; } void setCharacterName(string setName) { characterName = setName; } void setCharacterLevel(int setLevel) { characterLevel = setLevel; } // virtual functions virtual void performUniqueAttack() { // nothing happens? } }; class Knight : public GameCharacter { private: string armorType; public: Knight() : GameCharacter() { armorType = "Leather Armor"; setCharacterName("My Knight Character"); } Knight(double health, string name, int level, string armor) : GameCharacter(health, name, level) { armorType = armor; } ~Knight() { // // cout << "This works?" << endl; } // accessor functions string getArmorType() { return armorType; } // mutator functions void setArmorType(string armor) { armorType = armor; } // virtual functions void performUniqueAttack() { // cout << getCharacterName() << " performed Knight Attack wearing " << armorType << "!" << endl; } }; class Mage : public GameCharacter { private: double mageMana; public: Mage() : GameCharacter() { mageMana = 0.0; setCharacterName("My Mage Character"); } Mage(double health, string name, int level, double mana) : GameCharacter(health, name, level) { mageMana = mana; } ~Mage() { // // cout << "This works?" << endl; } // accessor functions double getMana() { return mageMana; } // mutator functions void setMana(double mana) { mageMana = mana; } // virtual functions void performUniqueAttack() { // cout << getCharacterName() << " performed Mage Attack with their " << mageMana << " amount of mana." << endl; } }; // function definitions // main function int main() { int setSize = 4; GameCharacter *characterSet[setSize]; characterSet[0] = new Knight(100.0, "Meta Knight", 20, "Pallidium Armor"); characterSet[1] = new Mage(50.0, "Rosalina", 5, 300.0); characterSet[2] = new Knight(100.0, "Eomer", 20, "Chainmail Armor"); characterSet[3] = new Mage(50.0, "Gandalf", 20, 900.0); for(int characterIterator = 0; characterIterator < setSize; characterIterator++) { characterSet[characterIterator]->performUniqueAttack(); } for(int deleteIterator = 0; deleteIterator < setSize; deleteIterator++) { delete characterSet[deleteIterator]; } return 0; }