Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int numberOfHeros = 0;
- enum Division {
- ASSASSIN = 1,
- MEDIC,
- MAGE,
- TANK
- };
- enum Combat {
- UNKNOWN = -1,
- RANGE = 1,
- MELEE,
- BOTH
- };
- struct Hero {
- string name;
- Division division;
- Combat combat;
- Hero() { };
- Hero(string nm, Division dv, Combat cb) {
- this->name = nm;
- this->division = dv;
- this->combat = cb;
- }
- };
- string getHeroName(Hero* HeroStorage) {
- char userInput[50];
- cout << "Enter a name for the new hero: ";
- string newName;
- bool nameTaken = false;
- cin.ignore();
- do {
- if (nameTaken) { cout << "\nName already taken!\n"; }
- nameTaken = false;
- cin.getline(userInput, 50);
- newName = (string)userInput;
- if (HeroStorage != nullptr) {
- for (int i = 0; i < numberOfHeros; i++) {
- if (newName == HeroStorage[i].name) { nameTaken = true; }
- }
- }
- } while (nameTaken == true);
- return newName;
- }
- Division getHeroDivision() {
- int userInput;
- bool hasErrorOccurred = false;
- do {
- if (hasErrorOccurred) { cout << "Number not in range!\n"; }
- cout << "Enter the divison of the new hero:\n"
- << "1 - Assassin\n2 - Medic\n3 - Mage\n4 - Tank\n";
- cin >> userInput;
- hasErrorOccurred = true;
- } while (userInput < 1 || userInput > 4);
- return (Division)userInput;
- }
- Combat getHeroCombat() {
- int userInput;
- cout << "Enter the combat of the new hero:\n"
- << "1 - Range\n2 - Melee\n3 - Both\n";
- cin >> userInput;
- if (userInput == 1 || userInput == 2 || userInput == 3) {
- return (Combat)userInput;
- }
- else return (Combat)-1;
- }
- Hero createHero(Hero* HeroStorage) {
- string name = getHeroName(HeroStorage);
- Division division = getHeroDivision();
- Combat combat = getHeroCombat();
- Hero newHero(name, division, combat);
- cout << "\nHero created sucessfully!\n";
- numberOfHeros++;
- return newHero;
- }
- void printHeroDivision(Hero hero) {
- switch (hero.division) {
- case 1: cout << "Assassin"; break;
- case 2: cout << "Medic"; break;
- case 3: cout << "Mage"; break;
- case 4: cout << "Tank"; break;
- default: break;
- }
- }
- void printHeroCombat(Hero hero) {
- switch (hero.combat) {
- case 1: cout << "Range"; break;
- case 2: cout << "Melee"; break;
- case 3: cout << "Both"; break;
- default: cout << "Unknown"; break;
- }
- }
- void printMenu() {
- cout << "1 - Create hero\n"
- << "2 - Hero statistics\n"
- << "3 - Delete hero\n"
- << "4 - All heros\n"
- << "5 - Exit\n";
- }
- int main()
- {
- Hero* HeroStorage = nullptr;
- for (;;) {
- printMenu();
- int userInput;
- cin >> userInput;
- if (userInput == 1) {
- Hero newHero = createHero(HeroStorage);
- if (HeroStorage == nullptr) {
- HeroStorage = new Hero[1];
- HeroStorage[0] = newHero;
- }
- else {
- Hero* tempHeros = new Hero[numberOfHeros - 1];
- for (size_t i = 0; i < numberOfHeros - 1; i++) {
- tempHeros[i] = HeroStorage[i];
- }
- delete[] HeroStorage;
- HeroStorage = new Hero[numberOfHeros];
- for (size_t i = 0; i < numberOfHeros - 1; i++) {
- HeroStorage[i] = tempHeros[i];
- }
- delete[] tempHeros;
- HeroStorage[numberOfHeros - 1] = newHero;
- }
- }
- if (userInput == 2) {
- char userInput[50];
- cout << "Enter the hero's name: ";
- cin.ignore();
- cin.getline(userInput, 50);
- string heroName = (string)userInput;
- bool heroFound = false;
- for (int i = 0; i < numberOfHeros; i++) {
- if (heroName == HeroStorage[i].name) {
- cout << "Hero's name: " << HeroStorage[i].name << endl
- << "Hero's division: "; printHeroDivision(HeroStorage[i]);
- cout << "\nHero's combat type: "; printHeroCombat(HeroStorage[i]);
- cout << endl;
- heroFound = true;
- }
- }
- if (!heroFound) { cout << "Hero doesn't exist\n"; }
- }
- if (userInput == 3) {
- if (numberOfHeros == 0) { cout << "No heros found!\n"; continue; }
- char userInput[50];
- cout << "Enter the name of the hero you want to delete: ";
- cin.ignore();
- cin.getline(userInput, 50);
- string heroToDelete = (string)userInput;
- bool heroExists = false;
- for (int i = 0; i < numberOfHeros; i++) {
- if (heroToDelete == HeroStorage[i].name) { heroExists = true; }
- }
- if (heroExists) {
- Hero* tempHeros = new Hero[numberOfHeros];
- for (size_t i = 0; i < numberOfHeros; i++) {
- tempHeros[i] = HeroStorage[i];
- }
- delete[] HeroStorage;
- HeroStorage = new Hero[numberOfHeros - 1];
- for (size_t i = 0, j = 0; i < numberOfHeros; i++) {
- if (tempHeros[i].name != heroToDelete) {
- HeroStorage[j] = tempHeros[i];
- j++;
- }
- }
- delete[] tempHeros;
- numberOfHeros--;
- }
- else {
- cout << "That hero doesn't exist!\n";
- }
- }
- if (userInput == 4) {
- if (!HeroStorage) { cout << "No heros created!\n"; }
- else {
- cout << "\n\n";
- for (int i = 0; i < numberOfHeros; i++) {
- cout << HeroStorage[i].name << endl;
- }
- cout << "\n\n";
- }
- }
- if (userInput == 5) { return 0; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement