Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: Hangman.java
- * ------------------
- * This program will eventually play the Hangman game from
- * Assignment #4.
- */
- import acm.graphics.*;
- import acm.program.*;
- import acm.util.*;
- import java.awt.*;
- public class Hangman extends ConsoleProgram {
- private RandomGenerator rgen = RandomGenerator.getInstance();
- private String orig;
- private String hidden;
- private String userInput;
- private String lowerInput;
- // private String missedLetters = ""; // this is not needed
- private char lastLetter;
- private int guess = 8;
- //private boolean guessed = false; //this is not needed
- private boolean GameWon = false; // added this to stop the program before 8 tries passed if all letters were guessed
- public class getWord extends HangmanLexicon {
- int rand = rgen.nextInt(getWordCount());
- String str = getWord(rand);
- }
- getWord w = new getWord();
- private String getAWord() {
- return(w.str);
- }
- public void run() {
- console();
- // graphics();
- // readLexicon();
- }
- private void console() {
- orig = getAWord();
- // write dashes in HIDDEN only once. Used then during the game to control win/loss
- hidden = orig.replaceAll(".","-");
- interactWithUser();
- }
- private void interactWithUser() {
- println("Welcome to Hangman!");
- gameProcess();
- gameEnd(); // changed to finish game regardless of current status. gameEnd will determine if won or lost.
- }
- private void gameProcess() {
- while (guess != 0 || GameWon) { // added "or if GameWon = true" to exit the loop if won before 8 tries
- println("The word now looks like this: " + hidden);
- checkUserInput();
- println("You have " + guess + " guesses left.");
- }
- }
- private void checkUserInput() {
- userInput = readLine("Your guess: ");
- lastLetter = userInput.charAt(0);
- lowerInput = orig.toLowerCase();
- if (hidden.toLowerCase().contains(Character.toLowerCase(lastLetter)) {
- // user entered already guessed letter. Need to warn him and exit checkUserInput
- println("You have already guessed this letter, are you being smart?");
- return;
- }
- if (orig.contains(userInput) || lowerInput.contains(userInput)) {
- println("** DEBUG: input letter matches letters in the word.");
- updateHidden();
- checkWin();
- } else {
- println("** DEBUG: input letter DOES NOT MATCH letters in the word.");
- guess--; // placed instead of guessed = false;
- }
- // this is not needed
- //if (!guessed) {
- // guess--;
- //}
- }
- private void updateHidden() {
- for (int i=0; i< orig.lenth(); i++) {
- if (Character.toLowerCase(orig.charAt(i)) == Character.toLowerCase(lastLetter)) {
- println("** DEBUG: Trying to replace matched symbol at index: " + Integer.toString(i));
- char c = orig.charAt(i);
- hidden = replaceChar(hidden, c , i);
- }
- }
- }
- private String replaceChar(String str, char ch, int index) {
- return str.substring(0, index) + ch + str.substring(index+1);
- }
- private void checkWin() {
- if (!hidden.contains("-")) {
- GameWon = true;
- }
- }
- private void gameEnd() { // changed from gameLost to gameEnd
- if (guess == 0) {
- println("You're completely hung.");
- println("The word was: " + getAWord());
- println("You lose.");
- }
- if (GameWon) {
- println("Congratulations, you WON!!");
- println("The word was: " + getAWord());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement