Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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 by 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement