SOURCE CODE
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
Post a Comment