Click here to Skip to main content
Click here to Skip to main content

Hangman Game

, 2 Mar 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
A Hangman game as a console application


Hangman is a popular word guessing game where the player attempts to build a missing word by guessing one letter at a time. After a certain number of incorrect guesses, the game ends and the player loses. The game also ends if the player correctly identifies all the letters of the missing word.

Using the Code

The program consists of several classes. The class diagram is shown below:


The main thing from the program is holding the guessed letters in an array collection and manipulating against the randomly picked word. In addition, you need to count the missing letters. Let's see the code that verifies the user's guessed letter and builds the word.

/// <summary>
/// Process the user guessed letter against the random picked word
/// </summary>
public void Play()
    guessed_FoundLetters = new List<string>();
    for (int i = 0; i < PickedWord.WordLength; i++)
    // Add underscore to the guessed and found string collection
        guessed_FoundLetters.Add(" _ ");
    for (int i = 0; i < PickedWord.WordLength; i++)
        string letter = PickedWord.Content.Substring(i, 1);
        if (GuessedLetters.Count > 0)
            foreach (string guessedLetter in this.GuessedLetters)
                if (letter.Equals(guessedLetter.Trim().ToUpper()))
                // If the guessed letter is found from the picked
                // word then replace underscore with the letter
                    guessed_FoundLetters.Insert(i, " " + letter + " ");
    Console.WriteLine(buildString(guessed_FoundLetters, false));

The enumeration class is an indicator whether a user is winning or losing the game.

/// <summary>
/// Game result enumeration
/// </summary>
public enum GAMERESULT
    WIN,// Game is finished and player won the game
    LOSE,// Game is finished and player lose the game
    CONTINUE,// Continue play

The program class is the one which takes all the actions from the user and runs the game. The method that actually plays the game is shown below:

/// <summary>
/// Play game
/// </summary>
private static void playGame()
    Words words = new Words();
    Word pickedWord = words.Pick;           
    PlayHangman playHangman = new PlayHangman();
    playHangman.PickedWord = pickedWord;
    for (int i = 0; i < pickedWord.WordLength; i++)
        Console.Write(" _ ");
    while (playHangman.Result() == GAMERESULT.CONTINUE)
        Console.Write("Pick a letter --> ");
        ConsoleKeyInfo guessedLetter = Console.ReadKey();
        if (playHangman.AddGuessedLetters(guessedLetter.KeyChar))
    if (playHangman.Result() == GAMERESULT.LOSE)
        Console.WriteLine("So sorry. You struck out.");
        makeTextBlink("The mystery word was '" + 
                      pickedWord.Content.ToUpper() + "'",500);
        makeTextBlink("You won !",500);

Points of Interest

In this program, I learnt how to solve word guessing problems. I hope you enjoyed the Hangman game and the implementation.


  • February 27, 2010: First version
  • March 1, 2010: Article updated


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Wonde Tadesse
Software Developer (Senior)
United States United States

Web API Thoughts 1 of 3 - Data Streaming
          * Best Web Dev Article of November 2014 - First Prize (Jan 02, 2015)
          * ASP.NET Community Spotlight (Dec 01,2014)
          * ASP.NET Articles Of The Day (Nov 15,2014)
Web API Thoughts 2 of 3 - Working with HTTPS
          * ASP.NET Articles Of The Day (Nov 22,2014)
Web API Thoughts 3 of 3 - Extending Web API Documentation
          * ASP.NET Articles Of The Day (Dec 04,2014)

Comments and Discussions

QuestionQuestion Pinmembertas ka moka2-Jan-13 3:32 
GeneralMy vote of 5 Pinmembertas ka moka2-Jan-13 3:25 
GeneralRe: My vote of 5 PinmemberWonde Tadesse8-Jan-13 13:10 
GeneralMy vote of 5 PinmemberKenneth Haugland27-Aug-12 11:32 
GeneralRe: My vote of 5 PinmemberWonde Tadesse13-Nov-12 13:12 
Questionnice work PinmemberMember 876818921-Jun-12 3:27 
I miss the old days of playing this type of game Big Grin | :-D now it seems more all about the graphics then the game play   Sigh | :sigh: but thats whats good about being a noob like me i get to start out making these good old games and have fun with them .

If you have any ideas as a place for me to start in C# then please let me know Big Grin | :-D
i have with Very little VB experience.

ive made about 40 applications on my own over this year just with what i got from the books and guides for VB.
AnswerRe: nice work PinmemberWonde Tadesse13-Nov-12 13:43 
GeneralMy vote of 5 PinmemberReza Ahmadi15-Apr-12 5:19 
GeneralRe: My vote of 5 PinmemberWonde Tadesse13-Nov-12 13:11 
GeneralMy vote of 5 PinmemberJαved16-Feb-12 4:57 
GeneralRe: My vote of 5 PinmemberWonde Tadesse14-Apr-12 12:42 
Questiongobez Pinmemberabysinia10-Nov-11 0:07 
GeneralRe: gobez PinmemberWonde Tadesse10-Nov-11 3:44 
GeneralMy vote of 5 Pinmemberabysinia10-Nov-11 0:06 
GeneralExcellent Work!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Pinmemberyunegu mahesh reddy9-Mar-10 23:23 
GeneralRe: Excellent Work!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PinmemberYewondwossen C.Tadesse (Wonde)10-Mar-10 7:02 
GeneralBravo ! PinmemberKanou924-Mar-10 5:55 
GeneralRe: Bravo ! PinmemberYewondwossen C.Tadesse (Wonde)4-Mar-10 6:03 
GeneralNice! PinmemberNishad S1-Mar-10 14:40 
GeneralRe: Nice! PinmemberYewondwossen C.Tadesse (Wonde)1-Mar-10 16:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150414.1 | Last Updated 2 Mar 2010
Article Copyright 2010 by Wonde Tadesse
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid