JAVA QUESTION: Write a hangman’s program where the user is a computer that has t
ID: 3912210 • Letter: J
Question
JAVA QUESTION:
Write a hangman’s program where the user is a computer that has to guess the word “JAVA.” The computer uses a brute force method.
First write the program that shows (prints) each guess (the letter) and also draws the result (line by line, circle by circle) when the guess is wrong.
Why does the computer win every time if the word is JAVA?
Look at the following list of words and determine ahead of time if the computer would win. Then prove our conclusion by running your program
Word List:
ADA
COBOL
LOGO
PEARL
BASIC
Explanation / Answer
import java.util.*;
import java.io.*;
public class Hangman {
public static Scanner keyboard;
public static final int MAXSIZE = 15000;
public static final int NUM_GUESS = 8;
public static final int WORD_LENGTH = 20;
public static void main(String[] args) {
keyboard = new Scanner(System.in);
int random = pickrandom(MAXSIZE);
try {
// Set up connection to the input file
Scanner input = new Scanner(new FileReader("dictionary.txt"));
String [] dictionaryWords = new String [MAXSIZE];
int usedsize = 0;
while ( usedsize < MAXSIZE && input.hasNextLine() ){
dictionaryWords [usedsize] = input.nextLine();
usedsize ++;
}
System.out
.println(" H A N G M A N. " +
" This is a word guessing game. " +
" A word will be selected at random and kept hidden. You will try to figure out the secret word by" +
" guessing letters which you think are in the word. " +
" You will guess one letter at a time. " +
" If the letter you guess is correct, the position(s) of the letter in the secret word will be shown. " +
" You will be allowed " + NUM_GUESS + " wrong guesses If you guess incorrectly " + NUM_GUESS+ " times, you lose the game. " +
" If you guess all of the letters in the word, you win." +
" Press enter to continue ");
keyboard.nextLine();
clearScreen();
String word = dictionaryWords[random];
System.out.println(dictionaryWords[random]);
String blank = blankWord(word);
String decision;
//decision = keyboard.nextLine().toUpperCase();
System.out.println("Word to guess :");
System.out.println(blank);
int tries = NUM_GUESS;
System.out.println("Enter a letter to guess or 9 to quit");
String guess = keyboard.next();
do{
//System.out.println(tries);
while (!guess.equals("9") || !(guess.equals(word) && tries >0))
{
char letter = guess.charAt(0);
String guesses = "";
guesses += letter;
if (word.indexOf(letter) < 0) {
tries--;
System.out.println("Incorrect letters tried: " + guess);
System.out.println("Number of guesses left: " + tries);
System.out.println("Enter a letter to guess or 9 to quit");
guess = keyboard.next();
}
else {
String correctWord = correctWord( guess, word, blank, letter );
System.out.println(correctWord);
System.out.println("Enter a letter to guess or 9 to quit");
tries--;
System.out.println("Number of guesses left: " + tries);
guess = keyboard.next();
tries--;
System.out.println("Number of guesses left: " + tries);
}
}
if (guess.equals("9")){
System.out.println("Thanks for playing");
}
if ( guess.equals(word)){
System.out.println("You won!");
}
if( tries == 0){
System.out.println("You have no more guesses left");
}
System.out.println("Play again? Y/N");
decision = keyboard.nextLine().toUpperCase();
} while (decision.equals("Y"));
//System.out.println("Play again? Y/N");
//decision = keyboard.nextLine().toUpperCase();
}
catch (FileNotFoundException e) {
System.out.println("There was an error opening one of the files.");
}
}
//Clears screen after introduction
private static void clearScreen (){
for (int blanks = 0; blanks < 80; blanks++) {
System.out.println();
}
}
// This method returns a randomly selected integer
// between 0 and count-1
public static int pickrandom(int count) {
Random generator = new Random();
return generator.nextInt(count);
}
// Places asterisks in place of the letters in the word
// Parameter is the string word. it holds mystery word
public static String blankWord(String word) {
String blank = "";
for (int i = 0; i < word.length(); i++) {
blank += " * ";
}
return blank;
}
//Replaces asterisks with correct guess
public static void fillWord(String blank,String word, char letter ){
for ( int i = 0; i <word.length() ; i++){
if(word.charAt(i) == letter){
blank.charAt( i );
}
}
}
//Receives correct guesses and replaces the asterisks with correct letter
//Parameters is the mystery word
public static String newWord (String word){
String newWord = "";
if (newWord.length() > 0){
newWord += word.charAt(0);
for (int i = 1; i <word.length(); i ++){
newWord += word.charAt(0);
}
}
return newWord;
}
//Counts the number of missed guesses and replaces total count
//Parameters are the mystery word and the letter guesses from user
public static boolean alreadyGuessed(String word, String guess){
for (int i = 0 ; i< word.length() ; i++){
if (word.charAt(i)== guess.charAt(0)){
return true;
}
}
return false;
}
//Compares to see if the letter has already been guessed
//Parameters are the mystery word and the user's guess
public static boolean letterGuessed(String word, String guess){
for (int i = 0 ; i< word.length(); i++){
if (word.charAt(i) == guess.charAt(0)){
return true;
}
}
return false;
}
//Replaces correct guess in blanks
public static String correctWord(String guess, String word, String blank, char letter){
for (int i = 0; i < word.length(); i++) {
if (letter == word.charAt(i)){
if (i >0){
blank = blank.substring (0, i) + letter + blank.substring(i +1);
}
if (i ==0){
blank = letter + blank.substring(1);
}
}
}
return blank;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.