Online Tutorials & Training Materials | STechies.com
Register Login

Create Hangman Game in Java using Simple Code

28 Nov 2019 12:59 pm || 0

What is the Hangman Game?

Hangman is a classic letter guessing game in which you have to guess the word represented by a series of dashes. The player has a limited number of guesses to identify the word. The game can be customized easily by changing the value of variables.

Java Hangman Program Using Array

//Java program for Hangman game with array

//Importing the java package
import java.util.Scanner;
import java.util.Random;
import java.util.LinkedList;
import java.net.*;
import java.io.*;

//Main class of the program
public class Main{
    //Printing the user's guessed character
    public static void printArray(char[] array){
        for(int i =0; i < array.length; i++){
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }

    public static boolean isTheWordGuessed(char[] array){
        for(int i =0; i < array.length; i++){
            if(array[i] == '_') {return false;}
        }
        return true;
    }

    //Main Class of the program
    public static void main(String[] args){
        //Creating the object of scanner class
        Scanner scanner = new Scanner(System.in);
        //Creating the object of random class
        Random random = new Random();
        //Array of available strings
        String[] guesses = {"stechies","tutorial","programming","google","facebook","sap"};

        boolean weArePlaying = true;
        //Checking with user that Are we still in the play
        while(weArePlaying){
            System.out.println("Welcome to my game of Hangman");
            char[] randomWordToGuess = guesses[random.nextInt(guesses.length)].toCharArray();

            int amountofGuesses = randomWordToGuess.length;
            char[] playerGuess = new char[amountofGuesses];

            for(int i = 0; i < playerGuess.length; i++){
                playerGuess[i] = '_';
            }

            boolean wordIsGuessed = false;
            int tries = 0;
            //Loop will till the number of guesses will not
            // equals to the available amount of guesses
            while( !wordIsGuessed && tries != amountofGuesses ){
                System.out.print("Current guesses : ");
                printArray(playerGuess);
                //Giving information to the user how many guesses are available
                System.out.printf("You have %d tries left.n", amountofGuesses - tries);
                //Telling user what to enter
                System.out.println("Enter a single character : ");
                char input = scanner.nextLine().charAt(0);
                //Increasing the tries counter
                tries++;

                if(input == '-'){
                    weArePlaying = false;
                    wordIsGuessed = true;
                }else{

                    for(int i = 0; i < randomWordToGuess.length; i++){
                        if(randomWordToGuess[i] == input) {
                            playerGuess[i] = input;
                        }
                    }

                    if(isTheWordGuessed(playerGuess)){
                        wordIsGuessed = true;
System.out.println("nn**************************nCongratulations you won!n**************************");
                    }

                }
            }
            //If loop if user out of moves
            if(!wordIsGuessed) System.out.println("You ran out of guesses :/");
            //Asking user if user wants to continue the game
            System.out.print("nDo you want to play another game? (y/n) : ");
            String anotherGame = scanner.nextLine();
            if(anotherGame.equals("n")) weArePlaying = false;
        }
        System.out.println("Game Over");
    }
} 

Output

Welcome to my game of Hangman
Current guesses : _ _ _ _ _ _ _ _
You have 8 tries left.
Enter a single character :
b
Current guesses : _ _ _ _ b _ _ _
You have 7 tries left.
Enter a single character :
o
Current guesses : _ _ _ _ b o o _
You have 6 tries left.
Enter a single character :
f
Current guesses : f _ _ _ b o o _
You have 5 tries left.
Enter a single character :
a
Current guesses : f a _ _ b o o _
You have 4 tries left.
Enter a single character :
k
Current guesses : f a _ _ b o o k
You have 3 tries left.
Enter a single character :
c
Current guesses : f a c _ b o o k
You have 2 tries left.
Enter a single character :
e


**************************
Congratulations you won!
**************************

Do you want to play another game? (y/n) : n
Game OverĀ 

Java Hangman Program Without Array

//Java program for Hanman Game {Without Array}

//Importing the Scanner Class of util package for Input
import java.util.Scanner;
    //Main Class of the program
    public class Main {
        //Global Variable Start
        private static Scanner scanner = new Scanner(System.in);
        private static String word;
        private static String hiddenWord;
        private static boolean winner = false;
        //Global Variable Ends

        //Main Function of the program
        public static void main(String[] args) {

            System.out.print("Enter a word to guess: ");
            //Taking  secret word as input from user
            word = scanner.nextLine();
            //Converting word into `Question (?)` Mark
            hiddenWord = wordToQuestionMarks(word);
            System.out.println("Hangman Word is Set\n\n");

            int amountofGuesses = word.length();
            int tries = 0;
            //Loop will run till you are winner / you are out of moves
            while (!winner && tries != amountofGuesses) {
                guessLetter();
                tries++;
            }

            if(!winner)
            {
                System.out.println("Oh! You ran out of guesses");
            }else{
                System.out.println("Congrats! You won");
            }
        }

        //Function to convert string
        private static String wordToQuestionMarks(String word) {
            return word.replaceAll(".", "?");
        }

        //Taking guess character input from user
        private static void guessLetter() {
            System.out.println("Hidden Word: " + hiddenWord);

            System.out.print("Guess a letter: ");
            String letterChoice = scanner.nextLine();

            int found = 0;

            if (hasLetter(letterChoice)) {
                found = updateGameState(letterChoice);
            }

            System.out.println("You found " + found + " " + letterChoice + "\n");
            gameOver();
        }

        //Updating the game states
        private static int updateGameState(String letter) {
            int found = 0;

            for(int i=0; i< word.length(); i++) {
                if (word.charAt(i) == letter.charAt(0)) {
                    String prev = hiddenWord.substring(0,i).concat(letter);
                    hiddenWord = prev.concat(hiddenWord.substring(i+1));
                    found++;
                }
            }

            return found;
        }

        private static void gameOver() {
            if (!hiddenWord.contains("?")) {
                winner = true;
            }
        }

        private static boolean hasLetter(String letter) {
            if (word.contains(letter)) {
                return true;
            }
            else {
                return false;
            }
        }

    } 

Output

Enter a word to guess: stechies
Hangman Word is Set

Hidden Word: ????????
Guess a letter: s
You found 2 s

Hidden Word: s??????s
Guess a letter: t
You found 1 t

Hidden Word: st?????s
Guess a letter: h
You found 1 h

Hidden Word: st??h??s
Guess a letter: e
You found 2 e

Hidden Word: ste?h?es
Guess a letter: i
You found 1 i

Hidden Word: ste?hies
Guess a letter: c
You found 1 c

Congrats! You won