Skip to main content

HANGMAN USING JAVA (CONSOLE)


SOURCE CODE

import java.util.Scanner;

class Hangman {

    public static void main(String[] args) {

        String words_list = "cheese puppies hello tree mango pineapple flowers basket lamp ceiling";
        String[] wordsAsArray = words_list.split(" ");
        int index;
        
        //to pick a random integer which is less than the number of array elements and greater than or equal to 0

        do{
            index =(int) (Math.random() * 10);
        }
        while(index<0 || index>=wordsAsArray.length);
        
        //To pick the word that corresponds to the random index picked

        String randomWord = wordsAsArray[index];
        
        //3 arrays declared

        char missed[] = new char[randomWord.length()];//to record missed letters
        char guessed[] = new char[randomWord.length()];//to record the currently guessed word
        char correct[] = new char[randomWord.length()];//to record the correct letters
        
        int missed_index=0,guessed_index=0;       

        //System.out.println("Random word: '" + randomWord + "'. It is of length: " + randomWord.length());
        //System.out.print("Word: ");
        
        for(int i=0; i<randomWord.length(); i++){
            System.out.print("_ ");
        }
        System.out.println();
        
        //Allowing the user to guess the letters for seperate rounds(# of rounds = # of letters)

        for(int i=0; i<randomWord.length(); i++){
            Scanner in = new Scanner(System.in);
            System.out.println("Guess letter: ");
            String c = in.next();

            //find letter method will return false if the letter is not found
            if(!find_letter(randomWord, guessed, c)){
                missed[missed_index]=c.charAt(0);//the character is stored inside the missed array
                missed_index++;
            }
            else{//letter is found
                correct[guessed_index]=c.charAt(0);//the character is stored inside the correct array
                guessed_index++;
            }
            int count = display_word(guessed);//shows the curretly guessed letters of the word
            System.out.println();
            System.out.print("Missed: ");
            for(char x:missed){
                System.out.print(x);//Missed letters
            }
            System.out.println();
            System.out.print("Guessed: ");
            for(char y:correct){
                System.out.print(y);//Correct letters
            }
            System.out.println();
            
            if(randomWord.length()==count){
                return;//to loop out when the word is guessed right(has duplicates)
            }
        }
System.out.println("The word is "+randomWord);
    }
    
    public static int display_word(char arr[]){  //return the number of letters currently in the array
        int num_letters=0;
System.out.print("Word: ");
        for(int i=0; i<arr.length; i++){
            if(Character.isLetter(arr[i])){//checking if each index has a letter stored or not 
                System.out.print(arr[i]);
                num_letters++;
            } 
            else {
                System.out.print("_ ");
            }
        }
        return num_letters;
    }
    
    public static boolean find_letter(String word,char arr[],String input){
        int count=0;//to allow duplicates
        for(int i=0; i<word.length(); i++){
            if(input.charAt(0)==word.charAt(i)){//if the user entered character is in the word
                arr[i]=input.charAt(0);
                count++;
                //display_word(arr, i);  
                //return true;
            }
        }
        if(count>0){
            return true;
        }
        else{
            return false;
        }
    }

}

Comments