Click here to Skip to main content
15,067,832 members
Articles / Programming Languages / C# 4.0
Posted 27 Feb 2010


69 bookmarked

Hangman Game

Rate me:
Please Sign up or sign in to vote.
4.94/5 (72 votes)
2 Mar 2010CPOL1 min read
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
United States United States
MSCS, MCTS, Senior Software Engineer, Architect, Craftsman, The Ultimate DEV ...
Azure Series

Comments and Discussions

QuestionMy take on the Hangman Game! Pin
Member 1463366824-Oct-19 1:59
MemberMember 1463366824-Oct-19 1:59 
PraiseNice! Pin
Member 140785125-Dec-18 2:56
MemberMember 140785125-Dec-18 2:56 
QuestionHANGMAN Pin
Ubaid Bin Zafar15-Apr-18 0:30
MemberUbaid Bin Zafar15-Apr-18 0:30 
AnswerRe: HANGMAN Pin
OriginalGriff15-Apr-18 0:31
mveOriginalGriff15-Apr-18 0:31 
PraiseNICE ONE! Pin
Ratul Thakur8-Apr-16 7:31
MemberRatul Thakur8-Apr-16 7:31 
Questionsource code Pin
Member 121803601-Dec-15 20:52
MemberMember 121803601-Dec-15 20:52 
QuestionQuestion Pin
tas ka moka2-Jan-13 2:32
Membertas ka moka2-Jan-13 2:32 
GeneralMy vote of 5 Pin
tas ka moka2-Jan-13 2:25
Membertas ka moka2-Jan-13 2:25 
GeneralRe: My vote of 5 Pin
Wonde Tadesse8-Jan-13 12:10
professionalWonde Tadesse8-Jan-13 12:10 
GeneralMy vote of 5 Pin
Kenneth Haugland27-Aug-12 10:32
professionalKenneth Haugland27-Aug-12 10:32 
GeneralRe: My vote of 5 Pin
Wonde Tadesse13-Nov-12 12:12
professionalWonde Tadesse13-Nov-12 12:12 
Questionnice work Pin
flinchy321-Jun-12 2:27
Memberflinchy321-Jun-12 2:27 
AnswerRe: nice work Pin
Wonde Tadesse13-Nov-12 12:43
professionalWonde Tadesse13-Nov-12 12:43 
GeneralMy vote of 5 Pin
Reza Ahmadi15-Apr-12 4:19
MemberReza Ahmadi15-Apr-12 4:19 
GeneralRe: My vote of 5 Pin
Wonde Tadesse13-Nov-12 12:11
professionalWonde Tadesse13-Nov-12 12:11 
GeneralMy vote of 5 Pin
Jαved16-Feb-12 3:57
professionalJαved16-Feb-12 3:57 
GeneralRe: My vote of 5 Pin
Wonde Tadesse14-Apr-12 11:42
professionalWonde Tadesse14-Apr-12 11:42 
Questiongobez Pin
abysinia9-Nov-11 23:07
Memberabysinia9-Nov-11 23:07 
GeneralRe: gobez Pin
Wonde Tadesse10-Nov-11 2:44
professionalWonde Tadesse10-Nov-11 2:44 
GeneralMy vote of 5 Pin
abysinia9-Nov-11 23:06
Memberabysinia9-Nov-11 23:06 
GeneralExcellent Work!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Pin
Y Mahi9-Mar-10 22:23
MemberY Mahi9-Mar-10 22:23 
GeneralRe: Excellent Work!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Pin
Wonde Tadesse10-Mar-10 6:02
professionalWonde Tadesse10-Mar-10 6:02 
GeneralBravo ! Pin
Kanou924-Mar-10 4:55
MemberKanou924-Mar-10 4:55 
GeneralRe: Bravo ! Pin
Wonde Tadesse4-Mar-10 5:03
professionalWonde Tadesse4-Mar-10 5:03 
GeneralNice! Pin
Nishad S1-Mar-10 13:40
MemberNishad S1-Mar-10 13:40 

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

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