SHARE
TWEET

Untitled

a guest Dec 8th, 2019 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * File: Hangman.java
  3.  * ------------------
  4.  * This program will eventually play the Hangman game from
  5.  * Assignment #4.
  6.  */
  7.  
  8. import acm.graphics.*;
  9. import acm.program.*;
  10. import acm.util.*;
  11.  
  12. import java.awt.*;
  13.  
  14. public class Hangman extends ConsoleProgram {
  15.  
  16.     private RandomGenerator rgen = RandomGenerator.getInstance();
  17.    
  18.     private String orig;
  19.     private String hidden;
  20.     private String userInput;
  21.     private String lowerInput;
  22.     // private String missedLetters = "";  // this is not needed
  23.    
  24.     private char lastLetter;
  25.     private int guess = 8;
  26.    
  27.     //private boolean guessed = false;    //this is not needed
  28.     private boolean GameWon = false;     // added this to stop the program before 8 tries passed if all letters were guessed
  29.  
  30.     public class getWord extends HangmanLexicon {
  31.         int rand = rgen.nextInt(getWordCount());
  32.         String str = getWord(rand);
  33.     }
  34.  
  35.     getWord w = new getWord();
  36.     private String getAWord() {
  37.         return(w.str);
  38.     }
  39.  
  40.     public void run() {
  41.         console();
  42. //      graphics();
  43. //      readLexicon();
  44.     }
  45.    
  46.     private void console() {
  47.         orig = getAWord();
  48.         // write dashes in HIDDEN only once. Used then during the game to control win/loss
  49.         hidden = orig.replaceAll(".","-");
  50.         interactWithUser();
  51.     }
  52.  
  53.     private void interactWithUser() {
  54.         println("Welcome to Hangman!");
  55.         gameProcess();
  56.         gameEnd();    // changed to finish game regardless of current status. gameEnd will determine if won or lost.
  57.     }
  58.    
  59.     private void gameProcess() {
  60.         while (guess != 0 || GameWon) {   // added "or if GameWon = true" to exit the loop if won before 8 tries
  61.             println("The word now looks like this: " + hidden);
  62.             checkUserInput();
  63.             println("You have " + guess + " guesses left.");
  64.         }
  65.     }
  66.  
  67.     private void checkUserInput() {
  68.         userInput = readLine("Your guess: ");
  69.         lastLetter = userInput.charAt(0);
  70.         lowerInput = orig.toLowerCase();
  71.         if (orig.contains(userInput) || lowerInput.contains(userInput)) {
  72.             // guessed = true;   // this is not needed
  73.             updateHidden();
  74.             checkWin();
  75.         } else {
  76.             guess--;    // placed instead of guessed = false;
  77.         }
  78.         // this is not needed
  79.         //if (!guessed) {
  80.         //  guess--;
  81.         //}
  82.     }
  83.  
  84.     private void updateHidden() {
  85.         for (int i=0; i< orig.lenth(); i++) {
  86.             if (Character.toLowerCase(orig.charAt(i)) == lastLetter.toLowerCase() ) {
  87.                 char c = orig.charAt(i);
  88.                 hidden = replaceChar(hidden, c ,  i);
  89.             }
  90.         }
  91.     }
  92.  
  93.     private String replaceChar(String str, char ch, int index) {
  94.         return str.substring(0, index) + ch + str.substring(index+1);
  95.     }
  96.  
  97.     private void checkWin() {
  98.         if (!hidden.contains("-")) {
  99.             GameWon =  true;
  100.         }
  101.     }
  102.  
  103.     private void gameEnd() {    // changed from gameLost to gameEnd
  104.         if (guess == 0) {
  105.             println("You're completely hung.");
  106.             println("The word was: " + getAWord());
  107.             println("You lose.");
  108.         }
  109.         if (GameWon) {
  110.             println("Congratulations, you WON!!");
  111.             println("The word was: " + getAWord());        
  112.         }
  113.     }
  114.  
  115. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top