I have made a really simple game using c++. Most of it works just fine but whenever I try to replay the game, the value doesn't reset and continues where I last left off and that's is not what I want it to happens. Like lets say, in my first try, I defeated the enemy and it health is zero and when I retry it, the value doesn't starts off by 100 but it starts off from zero. And I really want a fix to that. Anyway, here is my code("It's pretty long):
#include <iostream>
#include <string>
using namespace std;
class Health{
private:
int health;
Health(const Health& cpy){
health = cpy.health;
}
public:
Health(){
health = 100;
}
void display_health(){
cout << "Health: " << health << endl;
}
Health& operator -=(int atk){
health -= atk;
return *this;
}
bool operator <(int compare){
return (health < compare);
}
bool operator >(int compare){
return !(this->operator<(compare));
}
bool operator &&(const int compare){
return (health && compare);
}
};
class Hero : public Health{
public:
void kick(){
cout << "Your kick damaged 45 health points" << endl;
}
void Punch(){
cout << "Your punch damaged 25 health points" << endl;
}
void Knife(){
cout << "Your kinfe damaged 60 health points" << endl;
}
void Tackle(){
cout << "Your tackle damaged 10 health points" << endl;
}
};
class Enemy : public Health{
public:
void Basic_hit(){
cout << "Enemy damaged you by 25 point" << endl;
}
};
int main(){
//local vaiables
string name;
int choice;
string ply_agn = "y";
//instance
Hero hero;
Enemy enmy;
//user interface
do{ //entire game repeats
cout << "Enter you character name: ";
getline(cin, name);
cout << "Your default health is : ";
hero.display_health();
cout << endl;
do{
//user interface
cout << "0.Kick - 45" << endl;
cout << "1.Punch - 25 " << endl;
cout << "2.Kinfe - 60" << endl;
cout << "3.Tackle - 10 " << endl;
//players choice
cout << "Which move you like to chose: ";
cin >> choice;
cout << endl;
//switch function
switch (choice)
{
case 0:
hero.kick();
cout << "Enemy ";
enmy -= 45;
enmy.display_health();
break;
case 1:
hero.Punch();
cout << "Enemy ";
enmy -= 25;
enmy.display_health();
break;
case 2:
hero.Knife();
cout << "Enemy ";
enmy -= 60;
enmy.display_health();
break;
case 3:
hero.Tackle();
cout << "Enemy ";
enmy -= 10;
enmy.display_health();
break;
default:
cout << "Invalid move! Try again" << endl;
break;
}
cout << endl;
//Enemy move
enmy.Basic_hit();
hero -= 25;
cout << "The enemy hit you with a basic hit. You recieved 25 damage" << endl;
cout << "Your ";
hero.display_health();
cout << endl;
} while (enmy > 0);
//winning condition
if (enmy < 0 && hero > 0) {
cout << "You won" << endl;
}
else if (hero < 0 && enmy > 0){
cout << "You lose" << endl;
}
else if (hero < 0 && enmy < 0){
cout << "This game is a draw" << endl;
}
} while (ply_agn == "y"); //This is where I think is messing up the game
//repeating condition
cout << "Would you like to play again: ";
cin >> ply_agn;
system("pause");
return 0;
}
And thank you for your time