Components of the Program

The following functions are used in the program to work for the different components of the game:

  • HangmanGame(): This Constructor is used for initializing the Game. This constructor randomly picks any word from the list already written in the code and initializes the number of attempts as 6.
     
  • play(): This function manages different things such as player guesses, information, the correct state of the game and displaying the hangman drawing.
     
  • getRandomWord(): This function is used to pick the random word from the predefined list. This function uses the rand() function to get the random index.
     
  • already guessed checks(): This function returns true and false if the player has already guessed the letter or not.
     
  • drawHangman(): This function draws step-by-step the picture of a hangman by considering the number of attempts left. If the number of attempts is 6 no picture will be shown and if the number of attempts is 0. Full Hangman is drawn.

Hangman Game in C++

With friends, many of us had played the hangman game where one player gave a hint to the other to make a correct guess of a particular thing. Here a simple representation of the game ‘Hangman’ is done using C++ programming language. The player will guess the fruit’s name and the Computer will give a hint to the player to make the correct guess.

 

Similar Reads

Rules of Hangman Game

Here are some of the basic rules of the game listed below:...

Components of the Program

The following functions are used in the program to work for the different components of the game:...

C++ Program for Hangman Game

C++ // C++ program to implement the hangman game #include #include #include #include #include #include    // define maximum number of incorrect attempts #define MAX_ATTEMPTS 6    using namespace std;    // main class class HangmanGame { public:     // constructor to ini     HangmanGame()     {         srand(static_cast(time(nullptr)));         secretWord = getRandomWord();         currentWord = string(secretWord.length(), '_');         attemptsLeft = MAX_ATTEMPTS;     }        // function to start the game.     void play()     {         cout << "Welcome to Hangman!" << endl;         cout << "Category: Fruits" << endl;         cout << "You have " << attemptsLeft              << " attempts to guess the fruit name."              << endl;            // the main game loop which will go on till the         // attempts are left or the game is won.         while (attemptsLeft > 0) {             displayGameInfo();             char guess;             cout << "Guess a letter: ";             cin >> guess;                if (isalpha(guess)) {                 guess = tolower(guess);                 if (alreadyGuessed(guess)) {                     cout << "You've already guessed that "                             "letter."                          << endl;                 }                 else {                     bool correctGuess                         = updateCurrentWord(guess);                     // if the guess is correct, we will                     // update the word and check if the word                     // is completely guessed or not                     if (correctGuess) {                         cout << "Good guess!" << endl;                         // if the word is completely                         // guessed.                         if (currentWord == secretWord) {                             displayGameInfo();                             cout << "Congratulations! You "                                     "guessed the word: "                                  << secretWord << endl;                             return;                         }                     }                     else {                         cout << "Incorrect guess." << endl;                         attemptsLeft--;                         drawHangman(attemptsLeft);                     }                 }             }             else {                 cout << "Please enter a valid letter."                      << endl;             }         }            if (attemptsLeft == 0) {             displayGameInfo();             cout << "You've run out of attempts. The word "                     "was: "                  << secretWord << endl;         }     }    private:     string secretWord;     string currentWord;     int attemptsLeft;     vector guessedLetters;        // select random word from the predefined word     string getRandomWord()     {         vector words             = { "apple", "banana", "cherry", "grape",                 "kiwi" };         int index = rand() % words.size();         return words[index];     }        // checking if the word is already guessed     bool alreadyGuessed(char letter)     {         return find(guessedLetters.begin(),                     guessedLetters.end(), letter)                != guessedLetters.end();     }        // updating the word after correct guess     bool updateCurrentWord(char letter)     {         bool correctGuess = false;         for (int i = 0; i < secretWord.length(); i++) {             if (secretWord[i] == letter) {                 currentWord[i] = letter;                 correctGuess = true;             }         }         guessedLetters.push_back(letter);         return correctGuess;     }        // function to provide the info at particular point in     // the game     void displayGameInfo()     {         cout << "Word: " << currentWord << endl;         cout << "Attempts left: " << attemptsLeft << endl;         cout << "Guessed letters: ";         for (char letter : guessedLetters) {             cout << letter << " ";         }         cout << endl;     }        // function to progressively draw the hangman     void drawHangman(int attemptsLeft)     {         // Add your hangman drawing logic here         // For simplicity, you can print a static hangman         // ASCII art Modify this function to display the         // hangman as you like         if (attemptsLeft == 5) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }         else if (attemptsLeft == 4) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |     |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }         else if (attemptsLeft == 3) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |    /|" << endl;             cout << "  |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }         else if (attemptsLeft == 2) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |    /|\\" << endl;             cout << "  |" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }         else if (attemptsLeft == 1) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |    /|\\" << endl;             cout << "  |    /" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }         else if (attemptsLeft == 0) {             cout << "   _____" << endl;             cout << "  |     |" << endl;             cout << "  |     O" << endl;             cout << "  |    /|\\" << endl;             cout << "  |    / \\" << endl;             cout << "  |" << endl;             cout << "  |" << endl;         }     } };    // driver code int main() {        HangmanGame game;     game.play();        return 0; }...