Question: Create two methods for a Hangman game in Java. The setUniqueWord() method goes through an ArrayList of input words and chooses a word at random

Create two methods for a Hangman game in Java. The setUniqueWord() method goes through an ArrayList of input words and chooses a word at random that has not been used in the hangman game before. The guessLetter(char guess) method will take a letter that is guessed by the user and reveal it in the word if it is correct. For example, if the word that is chosen for the game is "puzzle", the user would see ******, and guess a letter. If they guessed "u", then they would see " *u**** "

The following classes have been provided:

HangmanHW.java

import java.util.*; public class HangmanHW { private int nGuess=7; // The number of wrong guesses (default 7 ) private ArrayList inputWords; // Input list of valid words private String targetWord; // Word trying to be guessed in the current game private HashSet usedWords = new HashSet<>(); // Current usedWords of past games private String currentWord; // this is the current word trying to be guessed (E.g., fishbowl ); private String currentWordDisplayString; // This is the current word that is displayed during the game // E.g., *is*b*wl as the player is guessing it. public HangmanHW(int nGuess, ArrayList inputWords ){ this.nGuess = nGuess; this.inputWords = inputWords; } public int getNGuess( ) { return nGuess; } public void setUniqueWord( ) { // description: go through the inputWords and return one that has not been used before // // class properties: // inputWords - an arrayList of valid HangMan words // for example, if // inputWords are // Banana, Paper, Scissors, Rock, Pattern, notebook, simple, salesdate // usedWords are // Banana, Paper, Scissors, Rock, Pattern // Then Sets // currentWord to either notebook, simple, salesdate ranomly // and updated usedWords currentWord = ""; } public int guessLetter( char guess ) { // input: char guess -> the letter being guessed // returns: int nChanged ... number of letters being changed // sets: currentWordDisplayString to the changed letter // e.g. currentWordDisplayString = "*****" // guess = "p"; // currentWordDisplayString will be set to "*pp**" int nChange = 0; currentWordDisplayString = ""; return nChange; } public void setInitialCurrentWordDisplay( ) { int sz = currentWord.length(); currentWordDisplayString = ""; for( int i=0; i 

----------------------------------------------------------------------------------------------------------------------------------------

HangManGetInputWords.java import java.util.ArrayList;

public interface HangManGetInputWords {

ArrayList getInputWords();

}

----------------------------------------------------------------------------------------------------------------------------------------

HangManGetGameProductionData.java

import java.util.ArrayList; class HangManGetGameProductionData implements HangManGetInputWords { @Override public ArrayList getInputWords() { ArrayList inWords = new ArrayList<>(); inWords.add("apple"); inWords.add("baker"); inWords.add("charlie"); inWords.add("dog"); inWords.add("fox"); inWords.add("green"); return inWords; } } 

----------------------------------------------------------------------------------------------------------------------------------------

driveHangManHWSln.java

import java.util.ArrayList; import java.util.Scanner; public class driveHangManHWSln { public static void main(String[] args) { HangManGetInputWords inW = new HangManGetGameProductionData(); ArrayList inWords = inW.getInputWords(); HangmanHW hm = new HangmanHW( 7, inWords); String word = hm.getUniqueWord(); String displayWord = hm.getCurrentWordDisplayString(); System.out.printf(" --- Starting DIsplay word->%s nGuesses=%s", displayWord, hm.getNGuess()); boolean playingThisGame = true; while ( playingThisGame == true) { char letter = askQuestion( "Guess a letter-> ", displayWord); int res = hm.guessLetter( letter ); int nGuess = hm.getNGuess(); if ( res == -1 ) { System.out.printf(" Nope not there res=%s displayword:%s nGuess=%s", res, displayWord, nGuess ); } else { System.out.printf(" Found it res=%s nGuess=%s", res, displayWord, nGuess ); } displayWord = hm.getCurrentWordDisplayString(); if ( nGuess == 0 ) { System.out.printf(" Sorry... Game over displayWord:%s Out of guesses:%s", displayWord, nGuess); } if ( displayWord.indexOf( '*' ) == -1 ) { System.out.printf(" Fantasic you got displayWord:%s with nGuess:%s left", displayWord, nGuess ); } } } private static char askQuestion(String question, String displayWord) { Scanner s = new Scanner(System.in); System.out.printf(" %s", question); String str = s.next(); return str.charAt(0); } } 

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!