Sitemap
Better Programming

Advice for programmers.

Learn C++ by Building the Hangman Game

If you’re a beginner and want hands-on practice, making a game might be an interesting way to learn!

4 min readMay 25, 2022

--

HANGMAN game in C++

Rules of Hangman

Before moving forward, let’s refresh ourselves on the rules of the Hangman game:

  • Hangman is a quick and easy two-player game.
  • In the first round, the first player (’host’ player) thinks of a secret word.
  • The ‘host’ player then draws a number of dashes equivalent to the number of letters in the secret word. They also fill a few letters as primary hints for the second player.
  • Now, the second player has to find the entire secret word by guessing letters one at a time.
  • If the secret word contains the guessed letter, the ‘host’ player fills that letter in all the respective blanks of the secret word. If not, the ‘host’ player draws one element of the hangman’s body. Every incorrect guess brings the second player one step closer to losing.
  • The second player wins if they guess the secret word before the ‘host’ player gets a chance to draw the entire hangman.
  • The roles of the ‘host’ player and the opposition player are switched in the next game.
Press enter or click to view image in full size
Photo by author

Let’s Code!

This project includes some important concepts like an array of object pointers, friend function, inheritance, etc. This code is going to be beginner-friendly, however, make sure you understand each concept before coding it (especially if you are a beginner).

You can check out the full code at the bottom of this blog (GitHub repo).

Step 0

Begin by adding the required c++ headers. Here’s how:

Step 1

Let’s begin building the actual game by creating a new class named Game.

  • This class will act as a parent for the Hangman class.
  • You can later add another game as a child of this Game class.
  • We would be adding a method called get_password to the Game class.

Step 2

In this step, we will add the get_password() method as well as all the related components.

  • The PASSWORD string will store the required password to start the game. You can change its value according to your requirements.
  • The pass_count will be used to limit the number of incorrect password attempts.
  • The pass string will store the entered password which will be compared with the ‘PASSWORD’ string.

Step 3

Next, let’s write a function that will be called at the start of the game.

  • This function will mark the beginning of the game.
  • It will display the rules of Hangman.

Step 4

Now, let’s build the HangMan class

  • This class will provide a blueprint for multiple instances of the HangMan game.
  • We would also be using a friend function called chance to proceed with the gameplay.

Step 5

Let’s build the chance method.

  • This method will run the logic behind the Hangman game.
  • It will accept a HangMan object as a function parameter.
  • This method will call another method, draw, which is responsible for drawing the current status of the hangman.

Step 6

To display the hangman’s state, the ‘draw’ method will be used.

  • An integer will be passed as a parameter.
  • Based on the value of the integer, this state of the ‘hangman’ will be decided.
  • This method will return an integer indicating the next state of the hangman.

Step 7

Finally, let’s write out the main function.

  • We will create a Game object.
  • Based on the password entered, the Hangman game will either begin or end.
  • We will create an array of object pointers that will point to newly created objects.
  • Every round will be using a new object.
  • In the end, the delete keyword will be used to destroy all the created objects.

Output

Press enter or click to view image in full size
Welcome message and game rules
Game begins
Second player guessing letters
Second players loses after multiple unsuccessful attempts

Potential Improvements

While there can be many minor adjustments done to make this game better, the following are the bigger potential improvements that could make the game even more impressive:

Adding a points system

  • We can add a marking system for each player.
  • The marks of a player can be based on how many attempts it took for them to guess the secret word.
  • The cumulative marks can be displayed later to declare the winner.

Adding additional games

  • We can add new classes as children of the Game class.
  • These new classes can contain other games.

Adding UI

  • Another enhancement that can be made is adding a clean UI for players.
  • The game will not only be attractive but will also be user friendly.

Here is the full code for reference:

Check out my other work here — sohambhure.com

Happy coding :).

--

--

No responses yet