Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I guess you've got this covered by now, but I was curious, so I made a shot at your classes, and commented my changes. Hopefully you, or someone else, can get some use of it :-]</p> <pre><code>// renamed from Hangman public class Main { public static void main(String[] args) { // removed need for JFrame as no GUI is actually used. Hangman hangman = new Hangman(); // starting a thread with the hangman runnable new Thread(hangman).start(); // main thread will end here, but the hangman thread will keep the program running. } } </code></pre> <p>Then the actual Hangman class:</p> <pre><code>import java.util.Arrays; import java.util.Scanner; // Renamed from HangmanPanel, changed from JPanel to Runnable since no GUI is shown. public class Hangman implements Runnable { // always use 7 lives, as this is the number of "hangman images" in reduceLives() private int lives = 7; private char[] hiddenWord; private char[] aOfWord; // I'm guessing that at some point you will use these randomly? private String[] words = { "ADA", "COBOL", "LOGO", "BASIC", "PROLOG", "UBUNTU", "UHURU" }; @Override public void run() { // This is the new Try-With-Resources in Java 7. // If you don't have Java 7, just change the // try ( Scanner scan = new Scanner(System.in) ) { // to // try { // Scanner scan = new Scanner(System.in); try ( Scanner scan = new Scanner(System.in) ) { System.out.println("Enter the word to be searched: "); String inputw = scan.nextLine(); aOfWord = inputw.toCharArray(); hiddenWord = new char[aOfWord.length]; // nice method for filling an array. Arrays.fill(hiddenWord, '_'); // renamed from output showStatus(); // fixed outer while-loop while (lives &gt; 0 &amp;&amp; Arrays.equals(aOfWord, hiddenWord) == false) { System.out.println("Please choose a letter: "); String guessletter = scan.nextLine(); if(guessletter.isEmpty()) { System.out.println("You must enter a letter. Try again!"); } else { checkForMatch(guessletter); } // refactored all inner loops into checkForMatch() and reduceLives() } System.out.println("Game over, you " + (lives &gt; 0 ? "won" : "lost")); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } private void checkForMatch(String letter) { boolean found = false; for (int i = 0; i &lt; aOfWord.length; i++) { if (letter.charAt(0) == aOfWord[i]) { found = true; hiddenWord[i] = letter.charAt(0); // removed break when found to allow searching entire word } // removed else condition to avoid clearing 'found' when searching rest of word } if(!found) { // reduceLives() will also print new hangman reduceLives(); } // printing summary showStatus(); } private void reduceLives() { lives = lives - 1; switch (lives) { case 6: System.out.println("_____"); System.out.println("| |"); System.out.println("| "); System.out.println("| "); System.out.println("| "); break; case 5: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| "); System.out.println("| "); break; case 4: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| | "); System.out.println("| "); break; case 3: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| /| "); System.out.println("| "); break; case 2: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| /|\\ "); System.out.println("| "); break; case 1: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| /|\\ "); System.out.println("| \\"); break; case 0: System.out.println("_____"); System.out.println("| |"); System.out.println("| o"); System.out.println("| /|\\"); System.out.println("| / \\"); break; } } private void showStatus() { System.out.println("Lives remaining: " + lives); System.out.println("Word found so far " + new String(hiddenWord)); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload