Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C++ using Polymorphism , correct what\'s missing below, so it follows the req

ID: 3837210 • Letter: I

Question

In C++ using Polymorphism, correct what's missing below, so it follows the requirments

fix the uml -- need italics with virtual functions (UML below)

add the missing virtual destructor

make a monster in main

___________________________________________________________________

Requirements

Create a "mouseClicked" virtual function. Have the Character version say "Should not be called", the nonPlayer say "I am the nonplayer" and the monster say "I am the monster"

Also, have a function in all the classes called “nonVirtual”. All 3 prints out the
class name. (So, nonPlayer’s nonVirtual function prints out “nonPlayer”.)

Then, in the main, create a Character pointer. Then dynamically create a nonPlayer or a Monster (random) and have the Character pointer set to it. Then call "mouseClicked" and "nonVirtual"

Also -- add a UML class diagram of the classes involved in the program.

Once you are done, delete the value pointed to by the Character Pointer.

____________________________________________________________________________

//Charater.h

#include
class character {
private :
int health;
int size;
public:
   character();
character(int,int);
int getHealth();
void setHealth(int);
int getSize();
void setSize(int);
void dispaly();
virtual void mouseclicked(void);
void nonVirtual();
};

//Charater.cpp

#include "character.h"
using namespace std;
character ::character()
{
   this->health=0;
   this->size=10;
}
character :: character(int x=0,int y=10) {
this->health = x;
this-> size = y;
}
int character ::getSize() {
return size;
}
void character :: setSize(int size) {
this->size = size;
}
int character :: getHealth() {
return health;
}
void character :: setHealth(int health) {
this->health = health;
}
void character :: dispaly() {
cout << "I am size " << getSize();
}
void character::mouseclicked()
{
cout<<"Should not be called";
}

void character:: nonVirtual()
{
   cout<<"This is character class";
}

//NonPlayer.h

#include "character.h"
class NonPlayer : public character {
private:
bool talkative;
public :
NonPlayer();
bool isTalkative();
void setTalkative(bool);
void display();
void mouseclicked();
void nonVirtual();
};

//NonPlayer.cpp

#include "NonPlayer.h"
using namespace std;
NonPlayer :: NonPlayer() {
talkative = true;
setSize(3);
}
bool NonPlayer :: isTalkative() {
return talkative;
}
void NonPlayer :: setTalkative(bool talkative) {
this-> talkative = talkative;
}
void NonPlayer::mouseclicked()
{
   cout<<"I am the nonplayer";
}
void NonPlayer :: display() {
//cout << "Hi, I am" << isTalkative() ? " talkative" : "not talkative " << " and I am size " << getSize();
}
void NonPlayer::nonVirtual()
{
   cout<<"This is Nonplayer class";
}

//Monster.h

#include "character.h"
class Monster : public character {
private:
int maxHit;
int minHit;
public :
   Monster();
int getMaxHit();
void setMaxHit(int);
int getMinHit();
void setMinHit(int );
void display();
void mouseclicked();
void nonVirtual();
};

//Monster.cpp

#include "Monster.h"
using namespace std;
Monster::Monster() {
   maxHit = 30;
   minHit = 10;
   setSize(7);
}
int Monster::getMaxHit() {
   return maxHit;
}
void Monster::setMaxHit(int maxHit) {
   this->maxHit = maxHit;
}
int Monster::getMinHit() {
   return minHit;
}
void Monster::setMinHit(int minHit) {
   this->minHit = minHit;
}
void Monster::display() {
   cout << "I hit the max is " << getMaxHit() << " and the min is " << getMinHit() << " I am size " << getSize();
}
void Monster::mouseclicked()
{
   cout << "I am the monster";
}
void Monster::nonVirtual()
{
   cout << "This is non virtuAL Class";
}

//main.cpp

#include

#include"NonPlayer.h"
using namespace std;

int main()
{
   character *c;
   NonPlayer *p;
c = new NonPlayer();
c->nonVirtual();

cout << endl;
c->mouseclicked();

cout << endl;
return 0;
}

Non Player talkative: bool mouse clicked0: void iSTalkative0:bool setTalkative(bool):void display0:void nonVirtual0: void character health int size: int virtual mouseclicked0:void set Health (int void get Health int setSize (int): void getSize nt display0: void nonvirtual0: void Monster maxHit int min Hit: int mouse clicked0 void setMaxHit (int): void get Max Hit nt setMinHit (int): void getMin Hit( int display0: void nonVirtual0: void

Explanation / Answer


//main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include "character.h"
#include "monster.h"
#include "non-player.h"
using namespace std;

int main()
{
   std::cout << "Hello world!" << std::endl;
   srand(time(0));
   int randomNum = (rand() % 2);
   if (randomNum < 1){
       Monster* char1 = new Monster(1, 1, 1, 1);
       (*char1).MouseClicked();
       (*char1).nonVirtual();
       delete char1;
       char1 = NULL;
   }
   else if (randomNum >= 1){
       nonPlayer* char1 = new nonPlayer(true, 1, 1);
       (*char1).MouseClicked();
       (*char1).nonVirtual();
       delete char1;
       char1 = NULL;
   }

   std::cin.get();
   return 0;
}

===================================================================

//character.cpp

#include "character.h"
#include <iostream>

using std::cout;
using std::endl;

   Character::Character(int health, int size)
   {
//       cout << "Creating!" << endl;
       setHealth(health);
       setSize(size);
   }

   void MouseClicked();

   void Character::setHealth(int newHealth){
       health = newHealth;
   }

   void Character::setSize(int newSize){
       size = newSize;
   }

   void Character::displayStats(){
       cout << "I am size " << size << ". ";
   }

   int Character::getHealth(){
       return health;
   }

   int Character::getSize(){
       return size;
   }

  
   void nonVirtual(){
       cout << "Character" << endl;
   }

   Character::~Character()
   {
       cout << "Boom! Headshot!" << endl;
   }

=========================================================================

//character.h

#ifndef _CHARACTER_H_
#define _CHARACTER_H_
#include <iostream>
using std::cout;
using std::endl;

class Character
{
public:
   Character(int health, int size);
  
   virtual void MouseClicked()=0;

   void setHealth(int newHealth);

   void setSize(int newSize);

   void displayStats();
  
   int getHealth();

   int getSize();

   virtual ~Character();

   void nonVirtual();

protected:
   int health;
   int size;
private:

};

#endif // _CHARACTER_H_

=======================================================================

//monster.cpp

#include "monster.h"
#include "character.h"

   Monster::Monster(int maxHit, int minHit, int health, int size):
   Character(health, size){
       setMaxHit(maxHit);
       setMinHit(minHit);
       //cout << "Creating monster!" << endl;
   }

   void Monster::MouseClicked(){
       cout << "I now attack you" << endl;
   }

   void Monster::nonVirtual(){
       cout << "Monster" << endl;
   }

   void Monster::setMaxHit(int max){
       maxHit = max;
   }

   void Monster::setMinHit(int min){
       minHit = min;
   }

   void Monster::displayStats(){
       cout << "I hit is " << maxHit << " and the min is " << minHit << ". ";
       Character::displayStats();
   }

   int Monster::getMaxHit(){
       return maxHit;
   }

   int Monster::getMinHit(){
       return minHit;
   }

=======================================================================

//monster.h
#ifndef _MONSTER_H_
#define _MONSTER_H_
#include "character.h"


class Monster: public Character
{
public:
   Monster(int maxHit, int minHit, int health, int size);

   virtual void MouseClicked();

   void setMaxHit(int max);

   void setMinHit(int min);

   void displayStats();
  
   int getMaxHit();

   int getMinHit();

   void nonVirtual();
protected:
   int maxHit;
   int minHit;
private:

};

#endif // _MONSTER_H_

==================================================================================

//non-player.cpp

#include <iostream>
#include "non-player.h"

   nonPlayer::nonPlayer(bool talkative, int health, int size):
   Character(health, size){
       setTalk(talkative);
   };

   void nonPlayer::setTalk(bool talk){
       talkative = talk;
   }

   void nonPlayer::MouseClicked(){
       cout << "What do you want to trade" << endl;
   }

   void nonPlayer::getTalk(){
       if(talkative){
           cout << "talkative";
       } else {
           cout << "non-talkative";
       }
   }

   void nonPlayer::displayStats(){
       cout << "I am ";
       getTalk();
       cout << " and ";
       Character::displayStats();
   }

   void nonPlayer::nonVirtual(){
       cout << "NPC" << endl;
   }

===============================================================================

//non-player.h

#ifndef _NON_PLAYER_H_
#define _NON_PLAYER_H_
#include "character.h"
class nonPlayer: public Character
{
public:
   nonPlayer(bool talkative, int health, int size);
     
   virtual void MouseClicked();

   void setTalk(bool talk);

   void displayStats();
  
   void getTalk();

   void nonVirtual();
         
protected:

private:
   bool talkative;
};

#endif // _NON_PLAYER_H_

=========================================================================