Advertisement
TheRightGuy

Any improvements?

Feb 8th, 2022
1,224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.87 KB | None | 0 0
  1. package hangman;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.Scanner;
  10.  
  11. public class Hangman {
  12.     private final String word = getRandomWordFromFile();
  13.     private final Scanner input = new Scanner(System.in);
  14.     private final StringBuilder maskedSentence = new StringBuilder("-".repeat(word.length()));
  15.  
  16.     Hangman() {
  17.         System.out.println(maskedSentence);
  18.     }
  19.  
  20.     private String getRandomWordFromFile() {
  21.         Map<Integer, String> words = new HashMap<>();
  22.         String line;
  23.         try {
  24.             File file = new File("src/main/resources/words.txt");
  25.             FileReader fileReader = new FileReader(file);
  26.             BufferedReader bufferedReader = new BufferedReader(fileReader);
  27.             int LINES = 100;
  28.             for (int i = 0; i < LINES; i++) {
  29.                 line = bufferedReader.readLine();
  30.                 words.put(i, line);
  31.             }
  32.         } catch (IOException e) {
  33.             e.printStackTrace();
  34.         }
  35.         return words.get((int) (Math.random() * words.size()));
  36.     }
  37.  
  38.     public void hangmanGame() {
  39.         StringBuilder incorrectCharsEntered = new StringBuilder();
  40.         while (incorrectCharsEntered.length() != doubleTheWordLength()) {
  41.             StringBuilder correctCharsEntered = new StringBuilder();
  42.             String human = input.next();
  43.             correctCharsEntered.append(human);
  44.  
  45.             if (!hasCorrectCharactersEntered(correctCharsEntered)) {
  46.                 incorrectCharsEntered.append(correctCharsEntered.charAt(correctCharsEntered.length() - 1));
  47.                 correctCharsEntered.deleteCharAt(correctCharsEntered.length() - 1);
  48.                 System.out.println("Letters attempted " + incorrectCharsEntered);
  49.             } else {
  50.                 for (int i = 0; i < word.length(); i++) {
  51.                     if (isLetterMatching(correctCharsEntered, i)) {
  52.                         maskedSentence.setCharAt(i, correctCharsEntered.charAt(correctCharsEntered.length() - 1));
  53.                     }
  54.                 }
  55.             }
  56.             if (maskedSentence.toString().equals(word) || human.equals(word)) {
  57.                 System.out.println("Congratulations you won");
  58.                 break;
  59.             }
  60.             System.out.println("So far " + maskedSentence);
  61.         }
  62.         System.out.println("The word was " + word);
  63.     }
  64.  
  65.     private boolean isLetterMatching(StringBuilder correctCharsEntered, int i) {
  66.         return word.charAt(i) == correctCharsEntered.charAt(correctCharsEntered.length() - 1);
  67.     }
  68.  
  69.     private boolean hasCorrectCharactersEntered(StringBuilder correctCharsEntered) {
  70.         return word.contains(correctCharsEntered);
  71.     }
  72.  
  73.     private int doubleTheWordLength() {
  74.         return word.length() * 2;
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement