import java.io.*; public class Hangman { String word,clue; int option; PrintWrit
ID: 3603576 • Letter: I
Question
import java.io.*;
public class Hangman
{
String word,clue;
int option;
PrintWriter p = new PrintWriter(System.out,true);
private void clearScreen()
{
System.out.print('u000C');
}
public void Hang1()
{
p.println(" _______ ");
p.println(" | |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang2()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | ");
p.println(" |");
p.println(" |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang3()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" |");
p.println("_____|_____ ");
}
public void Hang4()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" | /");
p.println("_____|_____ ");
}
public void Hang5()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | |");
p.println(" | |");
p.println(" | / \");
p.println("_____|_____ ");
}
public void Hang6()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | /|");
p.println(" | |");
p.println(" | / \");
p.println("_____|_____ ");
}
public void Hang7()
{
p.println(" _______ ");
p.println(" | |");
p.println(" | ( )");
p.println(" | |");
p.println(" | /|\");
p.println(" | |");
p.println(" | / \");
p.println("_____|_____ ");
}
}
public String[] Countries()
{
option = (int)(Math.random()*10);
switch(option)
{
case 0:
{
clue = "Means 'Rich Coast' in Spanish";
word = "C O S T A | R I C A";
}
break;
case 1:
{
clue = "Sorry. No clue for this one";
word = "I N D I A";
}
break;
case 2:
{
clue = "T&T";
word = "T R I N I D A D | A N D | T O B A G O";
}
break;
case 3:
{
clue = "Consists of nearly one thousand islands";
word = "S O L O M O N | I S L A N D S";
}
break;
case 4:
{
clue = "It's capital is Riyadh";
word = "S A U D I | A R A B I A";
}
break;
case 5:
{
clue = "Lucky guy : You're getting a free letter : P";
word = "T H E | P H I L I P P I N E S";
}
break;
case 6:
{
clue = "The fastest man on Earth is from this country";
word = "J A M A I C A";
}
break;
case 7:
{
clue = "3 movies have been filmed using this country's name";
word = "M A D A G A S C A R";
}
break;
case 8:
{
clue = "Greatest world power";
word = "U N I T E D | S T A T E S | O F | A M E R I C A";
}
break;
case 9:
{
clue = "Lucky guy : You're getting a free letter : Y";
word = "M A L A Y S I A";
}
break;
}
return new String[] {word,clue};
}
public static void main()throws IOException
{
Hangman obj = new Hangman();
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
PrintWriter p = new PrintWriter(System.out,true);
p.println("Let's play HANGMAN! -By Naren");
p.println();
obj.clearScreen();
String bothwordandclue[] = new String[2];
int counter = 6;
String guessword = bothwordandclue[0];
String wordclue = bothwordandclue[1];
int lengthofword = (int)(Math.round(((double)guessword.length()/2)));
int checkguess = 0;
String a;
String guesses[] = new String[50];
StringBuffer guessit = new StringBuffer();
for (int i = 0;i<lengthofword;i++)
guessit = guessit.append("_ ");
guessit.delete((2 * lengthofword)-1,(2 * lengthofword));
int index = guessword.indexOf("|");
while(index >= 0)
{
guessit.setCharAt(index, '|');
index = guessword.indexOf("|", index+1);// Start searching for next "|" after this index
}
p.println(guessit + " The letters you have entered so far");
do
{
p.println();
if(counter == 6)
obj.Hang1();
else if(counter == 5)
obj.Hang2();
else if(counter == 4)
obj.Hang3();
else if(counter == 3)
obj.Hang4();
else if(counter == 2)
obj.Hang5();
else if(counter == 1)
obj.Hang6();
p.println();
p.println("Enter your guess letter");
String guessletter2 = br.readLine();
String guessletter = guessletter2.toUpperCase();
obj.clearScreen();
for(int i = 0;i<lengthofword;i++)
{
if(guessletter.charAt(0) == guessword.charAt(2*i))
{
guessit.setCharAt(2*i,guessletter.charAt(0));
checkguess=1;
}
}
if(checkguess == 1)
{
p.println("Correct Guess. You have " + counter + " incorrect guesses left The letters you have entered so far");
p.println(guessit);
}
else
{
counter--;
if(counter == 0)
{
p.println("Wrong guess. You hanged the man :(");
p.println(guessit);
obj.Hang7();
}
else
{
p.println("Wrong guess. You have " + counter + " incorrect guesses left The letters you have entered so far");
p.println(guessit);
}
}
checkguess = 0;
if(counter == 0)
p.println(" Sorry you lost the game The correct word is " + guessword);
a = guessit.toString();
if(a.equals(guessword))
{
p.println("You guessed the word!!!!!");
counter=0;
}
}while(counter>0);
}
}
This is the code of a hangman game, how to change it to GUI?
Explanation / Answer
import java.util.Arrays;
import java.util.Scanner;
public class Hangman{
public static void main(String[] args) {
String[] words = {"writer", "that", "program"};
int randomWordNumber = (int) (Math.random() * words.length);
char[] enteredLetters = new char[words[randomWordNumber].length()];
int triesCount = 0;
boolean wordIsGuessed = false;
do {
switch (enterLetter(words[randomWordNumber], enteredLetters)) {
case 0:
triesCount++;
break;
case 1:
triesCount++;
break;
case 2:
break;
case 3:
wordIsGuessed = true;
break;
}
} while (! wordIsGuessed);
System.out.println(" The word is " + words[randomWordNumber] +
" You missed " + (triesCount -findEmptyPosition(enteredLetters)) +
" time(s)");
}
/* Hint user to enter a guess letter,
returns 0 if letter entered is not in the word (counts as try),
returns 1 if letter were entered 1st time (counts as try),
returns 2 if already guessed letter was REentered,
returns 3 if all letters were guessed */
public static int enterLetter(String word, char[] enteredLetters) {
System.out.print("(Guess) Enter a letter in word ");
// If-clause is true if no asterisks were printed so
// word is successfully guessed
if (! printWord(word, enteredLetters))
return 3;
System.out.print(" > ");
Scanner input = new Scanner(System.in);
int emptyPosition = findEmptyPosition(enteredLetters);
char userInput = input.nextLine().charAt(0);
if (inEnteredLetters(userInput, enteredLetters)) {
System.out.println(userInput + " is already in the word");
return 2;
}
else if (word.contains(String.valueOf(userInput))) {
enteredLetters[emptyPosition] = userInput;
return 1;
}
else {
System.out.println(userInput + " is not in the word");
return 0;
}
}
public static boolean printWord(String word, char[] enteredLetters) {
boolean asteriskPrinted = false;
for (int i = 0; i < word.length(); i++) {
char letter = word.charAt(i);
if (inEnteredLetters(letter, enteredLetters))
System.out.print(letter);
else {
System.out.print('*');
asteriskPrinted = true;
}
}
return asteriskPrinted;
}
public static boolean inEnteredLetters(char letter, char[] enteredLetters) {
return new String(enteredLetters).contains(String.valueOf(letter));
}
public static int findEmptyPosition(char[] enteredLetters) {
int i = 0;
while (enteredLetters[i] != 'u0000') i++;
return i;
}
}
public class Hangman {
public static void main(String[] args) {
Game game = new Game("Treehouse");
Prompter prompter = new Prompter(game);
prompter.play();
}
}
import java.util.Scanner;
public class Prompter {
private Game mGame;
public Prompter(Game game) {
mGame = game;
}
public void play() {
while (mGame.getRemainingTries() > 0 && !mGame.isSolved()) {
displayProgress();
promptForGuess();
}
if (mGame.isSolved()) {
System.out.printf("Congratulations you won the game with %s remaining tries", mGame.getRemainingTries());
} else {
System.out.printf("Bummer the answer was %s", mGame.getAnswer());
}
}
public boolean promptForGuess() {
Scanner s = new Scanner(System.in);
char guess;
boolean isHit = false;
boolean isValidGuess = false;
while (!isValidGuess) {
System.out.println("Enter a letter: ");
String guessAsString = s.nextLine();
try {
isHit = mGame.applyGuess(guessAsString);
isValidGuess = true;
} catch (IllegalArgumentException iae) {
System.out.printf("%s. Please try again. ", iae.getMessage());
}
}
return isHit;
}
public void displayProgress() {
System.out.printf("You have %s tries to solve : %s ",
mGame.getRemainingTries(),
mGame.getCurrentProgress());
}
}
public class Game {
public static final int MAX_MISSES = 7;
private String mAnswer;
private String mHits;
private String mMisses;
public Game(String answer) {
mAnswer = answer;
mHits = " ";
mMisses = " ";
}
public boolean applyGuess(String letters) {
if (letters.length() == 0) {
throw new IllegalArgumentException("There aro no letters!");
}
return applyGuess(letters.charAt(0));
}
public boolean applyGuess(char letter) {
letter = validateGuess(letter);
boolean isHit = mAnswer.indexOf(letter) >= 0;
if (isHit) {
mHits += letter;
} else {
mMisses += letter;
}
return isHit;
}
private char validateGuess(char letter) {
if (!Character.isLetter(letter)) {
throw new IllegalArgumentException("A letter is required");
}
if (mHits.indexOf(letter) >= 0 || mMisses.indexOf(letter) >= 0) {
throw new IllegalArgumentException(letter + " is already been guessed");
}
return letter;
}
public String getCurrentProgress() {
String progress = " ";
for (char letter : mAnswer.toCharArray()) {
char display = '-';
if (mHits.indexOf(letter) >= 0) {
display = letter;
}
progress += display;
}
return progress;
}
public int getRemainingTries() {
return MAX_MISSES - mMisses.length();
}
public String getAnswer() {
return mAnswer;
}
public boolean isSolved() {
return getCurrentProgress().indexOf('-') == -1;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.