Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hangman;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Hangman {
- private final String word = getRandomWordFromFile();
- private final Scanner input = new Scanner(System.in);
- private final StringBuilder maskedSentence = new StringBuilder("-".repeat(word.length()));
- Hangman() {
- System.out.println(maskedSentence);
- }
- private String getRandomWordFromFile() {
- Map<Integer, String> words = new HashMap<>();
- String line;
- try {
- File file = new File("src/main/resources/words.txt");
- FileReader fileReader = new FileReader(file);
- BufferedReader bufferedReader = new BufferedReader(fileReader);
- int LINES = 100;
- for (int i = 0; i < LINES; i++) {
- line = bufferedReader.readLine();
- words.put(i, line);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return words.get((int) (Math.random() * words.size()));
- }
- public void hangmanGame() {
- StringBuilder incorrectCharsEntered = new StringBuilder();
- while (incorrectCharsEntered.length() != doubleTheWordLength()) {
- StringBuilder correctCharsEntered = new StringBuilder();
- String human = input.next();
- correctCharsEntered.append(human);
- if (!hasCorrectCharactersEntered(correctCharsEntered)) {
- incorrectCharsEntered.append(correctCharsEntered.charAt(correctCharsEntered.length() - 1));
- correctCharsEntered.deleteCharAt(correctCharsEntered.length() - 1);
- System.out.println("Letters attempted " + incorrectCharsEntered);
- } else {
- for (int i = 0; i < word.length(); i++) {
- if (isLetterMatching(correctCharsEntered, i)) {
- maskedSentence.setCharAt(i, correctCharsEntered.charAt(correctCharsEntered.length() - 1));
- }
- }
- }
- if (maskedSentence.toString().equals(word) || human.equals(word)) {
- System.out.println("Congratulations you won");
- break;
- }
- System.out.println("So far " + maskedSentence);
- }
- System.out.println("The word was " + word);
- }
- private boolean isLetterMatching(StringBuilder correctCharsEntered, int i) {
- return word.charAt(i) == correctCharsEntered.charAt(correctCharsEntered.length() - 1);
- }
- private boolean hasCorrectCharactersEntered(StringBuilder correctCharsEntered) {
- return word.contains(correctCharsEntered);
- }
- private int doubleTheWordLength() {
- return word.length() * 2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement