Guest User

Untitled

a guest
Sep 28th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class Hangman{
  5.     public static void main(String[] args) {
  6.         String[] words = {"writer", "that", "program"};
  7.         // Pick random index of words array
  8.         int randomWordNumber = (int) (Math.random() * words.length);
  9.         // Create an array to store already entered letters
  10.         char[] enteredLetters = new char[words[randomWordNumber].length()];
  11.         int triesCount = 0;
  12.         boolean wordIsGuessed = false;
  13.         do {
  14.         // infinitely iterate through cycle as long as enterLetter returns true
  15.         // if enterLetter returns false that means user guessed all the letters
  16.         // in the word e. g. no asterisks were printed by printWord
  17.         switch (enterLetter(words[randomWordNumber], enteredLetters)) {
  18.             case 0:
  19.                 triesCount++;
  20.                 break;
  21.             case 1:
  22.                 triesCount++;
  23.                 break;
  24.             case 2:
  25.                 break;
  26.             case 3:
  27.                 wordIsGuessed = true;
  28.                 break;
  29.         }
  30.         } while (! wordIsGuessed);
  31.         System.out.println("\nThe word is " + words[randomWordNumber] +
  32.             " You missed " + (triesCount -findEmptyPosition(enteredLetters)) +
  33.             " time(s)");
  34.     }
  35.  
  36.     /* Hint user to enter a guess letter,
  37.     returns 0 if letter entered is not in the word (counts as try),
  38.     returns 1 if letter were entered 1st time (counts as try),
  39.     returns 2 if already guessed letter was REentered,
  40.     returns 3 if all letters were guessed */
  41.     public static int enterLetter(String word, char[] enteredLetters)    {
  42.         System.out.print("(Guess) Enter a letter in word ");
  43.         // If-clause is true if no asterisks were printed so
  44.         // word is successfully guessed
  45.         if (! printWord(word, enteredLetters))
  46.             return 3;
  47.         System.out.print(" > ");
  48.         Scanner input = new Scanner(System.in);
  49.         int emptyPosition = findEmptyPosition(enteredLetters);
  50.         char userInput = input.nextLine().charAt(0);
  51.         if (inEnteredLetters(userInput, enteredLetters)) {
  52.             System.out.println(userInput + " is already in the word");
  53.             return 2;
  54.         }
  55.         else if (word.contains(String.valueOf(userInput))) {
  56.             enteredLetters[emptyPosition] = userInput;
  57.             return 1;
  58.         }
  59.         else {
  60.             System.out.println(userInput + " is not in the word");
  61.             return 0;
  62.             }
  63.     }
  64.  
  65.     /* Print word with asterisks for hidden letters, returns true if
  66.     asterisks were printed, otherwise return false */
  67.     public static boolean printWord(String word, char[] enteredLetters) {
  68.         // Iterate through all letters in word
  69.         boolean asteriskPrinted = false;
  70.         for (int i = 0; i < word.length(); i++) {
  71.             char letter = word.charAt(i);
  72.             // Check if letter already have been entered bu user before
  73.             if (inEnteredLetters(letter, enteredLetters))
  74.                 System.out.print(letter); // If yes - print it
  75.             else {
  76.                 System.out.print('*');
  77.                 asteriskPrinted = true;
  78.             }
  79.         }
  80.         return asteriskPrinted;
  81.     }
  82.  
  83.     /* Check if letter is in enteredLetters array */
  84.     public static boolean inEnteredLetters(char letter, char[] enteredLetters) {
  85.         return new String(enteredLetters).contains(String.valueOf(letter));
  86.     }
  87.  
  88.     /* Find first empty position in array of entered letters (one with code \u0000) */
  89.     public static int findEmptyPosition(char[] enteredLetters) {
  90.         int i = 0;
  91.         while (enteredLetters[i] != '\u0000') i++;
  92.         return i;
  93.     }
  94. }
Add Comment
Please, Sign In to add comment