You will be implementing a project in C++ as your final exam. The project is a text-based adventure game based on a storyline. You can define whatever storyline you want. The game will focus on a character overcoming obstacles to reach the final goal.
The game will have 3 levels. Each level should have 2 challenges. The challenges will represent obstacles. The project will use all the concepts that have been taught so far.

The project will include the following:
A character.h file where you define a class called Character. The character class has following members:
Date Members:
name: string
health: int
Member functions:
Constructor: Character(string n);
Takes a string and assigns it to the name data member. Also, sets health to 50.
void updateHealth(Character &c);
Increments the health of the current character by 10 points, and decrements the health of character c by 10 points.
int getHealth();
returns the health of a character
string getName();
returns the name of a character
void print();
Prints name and health of a character
For the main part, you can divide your code into multiple files, or just work on a single main.cpp file.
You will need to implement the following functions outside the class definition. These are not member functions of Character class:
winner function: Finds the character who won (the character which has higher health points), and prints the name and health of that character
level1 function: This function contains the challenges for level 1. You can implement both the challenges inside this function, or define separate functions for the challenges and call them inside this function.
level2 function: Similar to level 1, this function will contain challenges for level 2
level3 function: Similarly, this function will contain challenges for level 3
main function: This is the function where you will call level1, level2, and level3 functions

You will need to implement the following aspects of the game:
Declare two integer variables MAX_SCORE and GAME_SCORE. Initialize them both to 0.
Declare two Character objects. The first will be the Player and the other will be the Oracle. You can give whatever names you want to your characters. They both will start with health at 50.
The Player will be the one who solves the challenges. The Oracle does not solve any challenges.
Before the player attempts any challenge, you need to check if it has at least 10 health points available. The game cannot continue if the player does not have any health points left.
You don't need to have any checks on Oracle's health. The Oracle's health can even be negative.

The course of the game will be as follows:
At the start of your game, your GAME_SCORE will be 0.
You will call your level1 function. The player attempts the first challenge. Once the player finishes the challenge (win/lose doesn't matter) they can go to the next challenge.
Then you call your level2 and level3 functions accordingly.
Everytime the player wins a challenge, do the following:
Increment the player's health by 10 points, and decrement Oracle's health by 10 points. This can be done by a single updateHealth function call
Increment the GAME_SCORE by 10
And, everytime the player loses a challenge, do the following instead:
Increment the Oracle's health by 10 points, and decrement player's health by 10 points. This can again be done by a single updateHealth function call
Do Not change the game score
After the game ends (this can happen if the player completes level3, or player's health is less than 10), do the following:
Update the MAX_SCORE to the GAME_SCORE, if the current GAME_SCORE is greater than MAX_SCORE
Call the winner function and print details of the winning character
Ask the user if they want to restart the game. If yes, go back to Step 1 and DO NOT reset character's health. Otherwise, end the game and print the MAX_SCORE.