#include #include #include #include using namespace std; class AttackInfo{ public: int dmg; string description; AttackInfo() AttackInfo(int a, string b){ } class BaseCharacter{ private: string name; int maxHP,presentHP,dodgeChance; public: int strength, agility,intelligence,baseDamage; public: dmg = a; description = b; BaseCharacter() { BaseCharacter(string a, int b, int c, int d, int e, int f, int g name = a; strength = b; agility = c; intelligence = d; maxHP = e; presentHP = maxHP; dodgeChance = f; baseDamage=g; } AttackInfo primaryAttack(){ return AttackInfo(baseDamage,"strikes at"); } AttackInfo secondaryAttack(){ return Attackinfo(baseDamage,""); } AttackInfo getAttack(){ return primaryAttack(); } void takeDamage(int a){} string toString(){ return "Name: "+getName()+"Max HP: "+to_string(ge Present HP: "+to_string(get PresentHP())+"Dodge Chance: "+to_string(get Dodge Chance()); } string getName(){return name;} int getMaxHp(){return maxHP;} int getPresentHP(){return presentHP;} void setPresentHP(int a){presentHP=a;} int getDodgeChance(){return dodgeChance;} void setDodgeChance(int a){dodgeChance=a;} }; class Warrior: public BaseCharacter{ private: int resistance; public: Warrior(string a, int b, int c, int d, int e, int f, int g, int h):BaseCharacter(a,b,c,d,e,f,g){ resistance = h; } AttackInfo primaryAttack(){ return Attackinfo(baseDamage+baseDamage*(stren at"); } AttackInfo secondaryAttack(){ int a = getDodgeChance(); if(a<50) a+=(agility/2); setDodgeChance(a); return AttackInfo(2,"gets more agile and leaps at"); } AttackInfo getAttack(){ srand(time(0)); int a = 1+ (rand() % 10); if (a==1) return secondaryAttack(); else return primaryAttack(); }

EBK JAVA PROGRAMMING
9th Edition
ISBN:9781337671385
Author:FARRELL
Publisher:FARRELL
Chapter10: Introduction To Inheritance
Section: Chapter Questions
Problem 13RQ
icon
Related questions
Question
#include<iostream>
#include<cstdlib>
#include<string>
#include<time.h>
using namespace std;
class AttackInfo{
public:
};
int dmg;
string description;
AttackInfo()
AttackInfo(int a, string b){
dmg = a;
description = b;
class BaseCharacter{
private:
}
string name;
int maxHP,presentHP,dodgeChance;
public:
int strength, agility,intelligence, baseDamage;
public:
BaseCharacter() {
BaseCharacter(string a, int b, int c, int d, int e, int f, int g){
name = a;
strength = b;
agility = c;
intelligence = d;
maxHP = e;
presentHP = maxHP;
dodgeChance = f;
baseDamage=g;
}
AttackInfo primaryAttack(){
return AttackInfo(baseDamage,"strikes at");
}
at");
AttackInfo secondaryAttack(){
return AttackInfo(baseDamage,"");
}
}
void takeDamage(int a){}
string toString(){
return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+"
Present HP: "+to_string(getPresentHP())+"Dodge Chance:
"+to_string(get DodgeChance());
}
};
AttackInfo getAttack(){
return primaryAttack();
};
class Warrior: public BaseCharacter{
private:
string getName(){return name;}
int getMaxHp(){return maxHP;}
int getPresentHP(){return presentHP;}
void setPresentHP(int a){presentHP=a;}
int getDodgeChance(){return dodgeChance;}
void setDodgeChance(int a){dodgeChance=a;}
int resistance;
public:
Warrior(string a, int b, int c, int d, int e, int f, int g, int
h):BaseCharacter(a,b,c,d,e,f,g){
resistance = h;
}
AttackInfo primaryAttack(){
return AttackInfo(baseDamage+baseDamage*(strength/20),"strikes
}
AttackInfo secondaryAttack(){
int a = getDodge Chance();
if(a<50)
a+=(agility/2);
setDodgeChance(a);
return AttackInfo(2,"gets more agile and leaps at");
}
AttackInfo getAttack(){
srand(time(0));
int a = 1+ (rand() % 10);
if (a==1)
return secondaryAttack();
else
return primaryAttack();
}
void takeDamage(int a){
int b = getPresentHP();
b -= a;
setPresentHP(b);
}
string toString(){
return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+"
Present HP: "+to_string(get PresentHP()+"Dodge Chance:
"+to_string(get DodgeChance());
}
};
class Mage: public BaseCharacter{
public:
Mage(string a, int b, int c, int d, int e, int f, int g):BaseCharacter(a,b,c,d,e,f,
g){
AttackInfo secondaryAttack(){
return
a fireball at");
}
Attackinfo(baseDamage+baseDamage*(intelligence/20),"throws
AttackInfo getAttack(){
srand(time(0));
int a = 1+ (rand() % 10);
if (a<=3)
return secondaryAttack();
else
return primaryAttack();
}
void takeDamage(int a){
int b = getPresentHP();
b = a;
setPresentHP(b);
}
string toString(){
return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+"
Present HP: "+to_string(getPresentHP())+"Dodge Chance:
"+to_string(get DodgeChance());
}
};
class Priest: public BaseCharacter{
public:
Priest(string a, int b, int c, int d, int e, int f, int g):BaseCharacter(a,b,c,d,e,f,
g){
AttackInfo secondaryAttack(){
int a = getPresentHP();
a += 5+ (intelligence/20);
setPresentHP(a);
return Attackinfo(0,"heals themselves and smiles at");
}
AttackInfo getAttack(){
srand(time(0));
int a = 1+ (rand() % 10);
if (a<=4)
return secondaryAttack();
else
return primaryAttack();
}
void takeDamage(int a){
int b = getPresentHP();
b -= a;
setPresentHP(b);
}
string toString(){
return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+"
Present HP: "+to_string(getPresentHP())+"Dodge Chance:
"+to_string(get DodgeChance());
}
Transcribed Image Text:#include<iostream> #include<cstdlib> #include<string> #include<time.h> using namespace std; class AttackInfo{ public: }; int dmg; string description; AttackInfo() AttackInfo(int a, string b){ dmg = a; description = b; class BaseCharacter{ private: } string name; int maxHP,presentHP,dodgeChance; public: int strength, agility,intelligence, baseDamage; public: BaseCharacter() { BaseCharacter(string a, int b, int c, int d, int e, int f, int g){ name = a; strength = b; agility = c; intelligence = d; maxHP = e; presentHP = maxHP; dodgeChance = f; baseDamage=g; } AttackInfo primaryAttack(){ return AttackInfo(baseDamage,"strikes at"); } at"); AttackInfo secondaryAttack(){ return AttackInfo(baseDamage,""); } } void takeDamage(int a){} string toString(){ return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+" Present HP: "+to_string(getPresentHP())+"Dodge Chance: "+to_string(get DodgeChance()); } }; AttackInfo getAttack(){ return primaryAttack(); }; class Warrior: public BaseCharacter{ private: string getName(){return name;} int getMaxHp(){return maxHP;} int getPresentHP(){return presentHP;} void setPresentHP(int a){presentHP=a;} int getDodgeChance(){return dodgeChance;} void setDodgeChance(int a){dodgeChance=a;} int resistance; public: Warrior(string a, int b, int c, int d, int e, int f, int g, int h):BaseCharacter(a,b,c,d,e,f,g){ resistance = h; } AttackInfo primaryAttack(){ return AttackInfo(baseDamage+baseDamage*(strength/20),"strikes } AttackInfo secondaryAttack(){ int a = getDodge Chance(); if(a<50) a+=(agility/2); setDodgeChance(a); return AttackInfo(2,"gets more agile and leaps at"); } AttackInfo getAttack(){ srand(time(0)); int a = 1+ (rand() % 10); if (a==1) return secondaryAttack(); else return primaryAttack(); } void takeDamage(int a){ int b = getPresentHP(); b -= a; setPresentHP(b); } string toString(){ return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+" Present HP: "+to_string(get PresentHP()+"Dodge Chance: "+to_string(get DodgeChance()); } }; class Mage: public BaseCharacter{ public: Mage(string a, int b, int c, int d, int e, int f, int g):BaseCharacter(a,b,c,d,e,f, g){ AttackInfo secondaryAttack(){ return a fireball at"); } Attackinfo(baseDamage+baseDamage*(intelligence/20),"throws AttackInfo getAttack(){ srand(time(0)); int a = 1+ (rand() % 10); if (a<=3) return secondaryAttack(); else return primaryAttack(); } void takeDamage(int a){ int b = getPresentHP(); b = a; setPresentHP(b); } string toString(){ return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+" Present HP: "+to_string(getPresentHP())+"Dodge Chance: "+to_string(get DodgeChance()); } }; class Priest: public BaseCharacter{ public: Priest(string a, int b, int c, int d, int e, int f, int g):BaseCharacter(a,b,c,d,e,f, g){ AttackInfo secondaryAttack(){ int a = getPresentHP(); a += 5+ (intelligence/20); setPresentHP(a); return Attackinfo(0,"heals themselves and smiles at"); } AttackInfo getAttack(){ srand(time(0)); int a = 1+ (rand() % 10); if (a<=4) return secondaryAttack(); else return primaryAttack(); } void takeDamage(int a){ int b = getPresentHP(); b -= a; setPresentHP(b); } string toString(){ return "Name: "+getName()+"Max HP: "+to_string(getMaxHp())+" Present HP: "+to_string(getPresentHP())+"Dodge Chance: "+to_string(get DodgeChance()); }
class ArenaManager{
private:
BaseCharacter *contestantList;
int maxContestant;
int numContestant;
public:
ArenaManager(int
maxContestant
numContestant = 0;
}
bool addContestant(char type, string a, int b, int c, int d, int e, int f, int g){
if(type=='m')
BaseCharacter *contestantList[numContestant] = { new
Mage(a,b,c,d,e,f,g) };
Priest(a,b,c,d,e,f,g) };
else
return false;
else if(type=='p')
BaseCharacter *contestantList[numContestant] = { new
}
bool addContestant(char type, string a, int b, int c, int d, int e, int f, int g, int
h){
}
}
numContestant+=1;
return true;
Warrior(a,b,c,d,e,f,g,h) };
else
a): contestantList(new BaseCharacter[a]){
= a;
if(type=='w')
BaseCharacter *contestantList[numContestant] = { new
return false;
numContestant+=1;
return true;
BaseCharacter viewContestant(int a){
return contestantList[a-1];
}
void simulateChallenge(int a, int b){
srand(time(0));
int x = 1+ (rand() % 10);
BaseCharacter attacker,counterattacker;
if(x<=5){
attacker = contestantList[a-1];
counterattacker = contestantList[b-1];
}
else{
}
}
attacker = contestantList[b-1];
counterattacker = contestantList[a-1];
while(1){
cout << attacker.toString() << endl;
cout << counterattacker.toString() << endl;
AttackInfo a1,a2;
counterattacker.getName() << endl;
AttackInfo a1,a2;
a1 = attacker.getAttack();
cout << attacker.getName() <<" " << a1.description << " " .
counterattacker.takeDamage(a1.dmg);
if(counterattacker.getPresentHP() <=0){
cout << attacker.getName() << "wins!!!" << endl;
break;
attacker.getName() << endl;
}
a2 = counterattacker.getAttack();
cout << counterattacker.getName() <<" " << a2.description <<
attacker.takeDamage(a2.dmg);
if(attacker.getPresentHP()<=0){
cout << counterattacker.getName() << " wins!!!" << endl;
break;
}
}
string viewAllContestants(){
string a;
for(int i=0; i<numContestant; i++){
a+=to_string(i)+"."+contestantList[i].toString()+"\n";
}
return a;
}
int main() {
int option=0;
ArenaManager ar(10);
do{
cout << "1.Add Contestant\n2. View Specific Contestant\n3. View All
Contestants\n4. Simulate Challenge\n5. Exit"<<endl;
cin >> option;
if(option==1){
int option2;
cout << "1. Warrior\n2. Mage\n3. Priest" << endl;
cin >> option2;
string a;
int b,c,d,e,f,g,h;
cout << "Name: " << endl;
cin >> a;
cout << "Strenght: " << endl;
cin >> b;
cout << "Agility: " << endl;
cin >> c;
cout << "Intelligence: " << endl;
cin >> d;
cout << "Max HP: " << endl;
cin >> e;
cout << "Dodge CHance: " << endl;
cin >> f;
cout << "Base Damage: " << endl;
cin >> g;
if(option2==1){
cout << "Resistance: " << endl;
cin >> h;
imptomi2,
cout << "1. Warrior\n2. Mage\n3. Priest" << endl;
cin >> option2;
string a;
int b,c,d,e,f,g,h;
cout << "Name: " << endl;
cin >> a;
cout << "Strenght: " << endl;
cin >> b;
cout << "Agility: " << endl;
cin >> c;
cout << "Intelligence: " << endl;
cin >> d;
cout << "Max HP: " << endl;
cin >> e;
cout << "Dodge CHance: " << endl;
cin >> f;
cout << "Base Damage: " << endl;
cin >> g;
if(option2==1){
cout << "Resistance: " << endl;
cin >> h;
ar.addContestant('w',a,b,c,d,e,f,g,h);
}
else if(option2==2)
else if(option2==3)
ar.addContestant('m',a,b,c,d,e,f,g,h);
ar.addContestant('p',a,b,c,d,e,f,g,h);
}
}
else if(option==2){
cout << ar.viewAllContestants() << endl;
int option2;
cin >> option2;
BaseCharacter temp = ar.viewContestant (option2);
cout << temp.toString() << endl;
else if(option==3){
cout << ar.viewAllContestants() << endl;
}
else if(option==4){
cout << ar.viewAllContestants() << endl;
int option2,option3;
cin >> option2;
cin >> option3;
ar.simulateChallenge(option2,option3);
}while(option!=5);
<<
Transcribed Image Text:class ArenaManager{ private: BaseCharacter *contestantList; int maxContestant; int numContestant; public: ArenaManager(int maxContestant numContestant = 0; } bool addContestant(char type, string a, int b, int c, int d, int e, int f, int g){ if(type=='m') BaseCharacter *contestantList[numContestant] = { new Mage(a,b,c,d,e,f,g) }; Priest(a,b,c,d,e,f,g) }; else return false; else if(type=='p') BaseCharacter *contestantList[numContestant] = { new } bool addContestant(char type, string a, int b, int c, int d, int e, int f, int g, int h){ } } numContestant+=1; return true; Warrior(a,b,c,d,e,f,g,h) }; else a): contestantList(new BaseCharacter[a]){ = a; if(type=='w') BaseCharacter *contestantList[numContestant] = { new return false; numContestant+=1; return true; BaseCharacter viewContestant(int a){ return contestantList[a-1]; } void simulateChallenge(int a, int b){ srand(time(0)); int x = 1+ (rand() % 10); BaseCharacter attacker,counterattacker; if(x<=5){ attacker = contestantList[a-1]; counterattacker = contestantList[b-1]; } else{ } } attacker = contestantList[b-1]; counterattacker = contestantList[a-1]; while(1){ cout << attacker.toString() << endl; cout << counterattacker.toString() << endl; AttackInfo a1,a2; counterattacker.getName() << endl; AttackInfo a1,a2; a1 = attacker.getAttack(); cout << attacker.getName() <<" " << a1.description << " " . counterattacker.takeDamage(a1.dmg); if(counterattacker.getPresentHP() <=0){ cout << attacker.getName() << "wins!!!" << endl; break; attacker.getName() << endl; } a2 = counterattacker.getAttack(); cout << counterattacker.getName() <<" " << a2.description << attacker.takeDamage(a2.dmg); if(attacker.getPresentHP()<=0){ cout << counterattacker.getName() << " wins!!!" << endl; break; } } string viewAllContestants(){ string a; for(int i=0; i<numContestant; i++){ a+=to_string(i)+"."+contestantList[i].toString()+"\n"; } return a; } int main() { int option=0; ArenaManager ar(10); do{ cout << "1.Add Contestant\n2. View Specific Contestant\n3. View All Contestants\n4. Simulate Challenge\n5. Exit"<<endl; cin >> option; if(option==1){ int option2; cout << "1. Warrior\n2. Mage\n3. Priest" << endl; cin >> option2; string a; int b,c,d,e,f,g,h; cout << "Name: " << endl; cin >> a; cout << "Strenght: " << endl; cin >> b; cout << "Agility: " << endl; cin >> c; cout << "Intelligence: " << endl; cin >> d; cout << "Max HP: " << endl; cin >> e; cout << "Dodge CHance: " << endl; cin >> f; cout << "Base Damage: " << endl; cin >> g; if(option2==1){ cout << "Resistance: " << endl; cin >> h; imptomi2, cout << "1. Warrior\n2. Mage\n3. Priest" << endl; cin >> option2; string a; int b,c,d,e,f,g,h; cout << "Name: " << endl; cin >> a; cout << "Strenght: " << endl; cin >> b; cout << "Agility: " << endl; cin >> c; cout << "Intelligence: " << endl; cin >> d; cout << "Max HP: " << endl; cin >> e; cout << "Dodge CHance: " << endl; cin >> f; cout << "Base Damage: " << endl; cin >> g; if(option2==1){ cout << "Resistance: " << endl; cin >> h; ar.addContestant('w',a,b,c,d,e,f,g,h); } else if(option2==2) else if(option2==3) ar.addContestant('m',a,b,c,d,e,f,g,h); ar.addContestant('p',a,b,c,d,e,f,g,h); } } else if(option==2){ cout << ar.viewAllContestants() << endl; int option2; cin >> option2; BaseCharacter temp = ar.viewContestant (option2); cout << temp.toString() << endl; else if(option==3){ cout << ar.viewAllContestants() << endl; } else if(option==4){ cout << ar.viewAllContestants() << endl; int option2,option3; cin >> option2; cin >> option3; ar.simulateChallenge(option2,option3); }while(option!=5); <<
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Data members
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT