package hangman;
import java.util.Scanner;
import java.io.File;
import java.util.InputMismatchException;
import java.io.FileNotFoundException;
import java.util.Random;
public class Hangman {
private char letter;
private int amountOfGuesses = 6;
private String word
= random
(); private String guesses
= numberOfLetters
();
File inFile
= new File("dictionary.txt"); Scanner input = new Scanner(inFile);
int i =0;
String line
= input.
nextLine(); while (input.hasNextLine()){
choices[i]=line;
}
input.close();
}
public void Game() {
System.
out.
println("Let's play Hangman!"); System.
out.
println("This is your word: " + guesses
); System.
out.
println("There are " + amountOfGuesses
+ " lives left."); while (amountOfGuesses > 0) {
Scanner user
= new Scanner
(System.
in); System.
out.
println("Please enter a letter: "); String idea
= user.
nextLine(); letterCheck();
if (guesses.equals(word)) {
System.
out.
println("You guessed the word: " + guesses
); System.
out.
println("You win!!"); break;
}
System.
out.
println("The word looks like this:" + guesses
); System.
out.
println("You have " + amountOfGuesses
+ "left."); if (amountOfGuesses == 0) {
System.
out.
println("The word was: " + word
); System.
out.
println("You lose! Game over!"); }
}
}
private String numberOfLetters
() { for (int i = 0; i < word.length(); i++) {
result = result + "-";
}
return result;
}
int index = game.nextInt(choices.length);
String guess
= choices
[index
]; return guess;
}
private void letterCheck() {
if (word.indexOf(letter) == -1) {
System.
out.
println("There are no " + letter
+ "'s in the word."); amountOfGuesses--;
}
if (word.indexOf(letter) != -1) {
System.
out.
println("The guess is correct."); }
for (int i = 0; i < word.length(); i++) {
if (letter == word.charAt(i)) {
if (i > 0) {
guesses = guesses.substring(0, i) + letter + guesses.substring(i + 1);
}
if (i == 0) {
guesses = letter + guesses.substring(1);
}
}
}
}
}
cGFja2FnZSBoYW5nbWFuOwoKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS5pby5GaWxlOwppbXBvcnQgamF2YS51dGlsLklucHV0TWlzbWF0Y2hFeGNlcHRpb247CmltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKaW1wb3J0IGphdmEudXRpbC5SYW5kb207CgpwdWJsaWMgY2xhc3MgSGFuZ21hbiB7CiAgIAogICAgcHJpdmF0ZSBjaGFyIGxldHRlcjsKICAgIHByaXZhdGUgU3RyaW5nW10gY2hvaWNlczsKICAgIHByaXZhdGUgaW50IGFtb3VudE9mR3Vlc3NlcyA9IDY7CiAgICBwcml2YXRlIFN0cmluZyB3b3JkID0gcmFuZG9tKCk7CiAgICBwcml2YXRlIFN0cmluZyBndWVzc2VzID0gbnVtYmVyT2ZMZXR0ZXJzKCk7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24gewoKICAgICAgICBGaWxlIGluRmlsZSA9IG5ldyBGaWxlKCJkaWN0aW9uYXJ5LnR4dCIpOwogICAgICAgIFNjYW5uZXIgaW5wdXQgPSBuZXcgU2Nhbm5lcihpbkZpbGUpOwogICAgICAgIFN0cmluZ1tdIGNob2ljZXMgPSBuZXcgU3RyaW5nWzUwMF07CiAgICAgICAgaW50IGkgPTA7CiAgICAgICAgU3RyaW5nIGxpbmUgPSBpbnB1dC5uZXh0TGluZSgpOwogICAgICAgIHdoaWxlIChpbnB1dC5oYXNOZXh0TGluZSgpKXsKICAgICAgICAgICBjaG9pY2VzW2ldPWxpbmU7CiAgICAgICAgfQogICAgICAgIGlucHV0LmNsb3NlKCk7CiAgICB9CgogICAgcHVibGljIHZvaWQgR2FtZSgpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxldCdzIHBsYXkgSGFuZ21hbiEiKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoaXMgaXMgeW91ciB3b3JkOiAiICsgZ3Vlc3Nlcyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGVyZSBhcmUgIiArIGFtb3VudE9mR3Vlc3NlcyArICIgbGl2ZXMgbGVmdC4iKTsKICAgICAgICB3aGlsZSAoYW1vdW50T2ZHdWVzc2VzID4gMCkgewogICAgICAgICAgICBTY2FubmVyIHVzZXIgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlBsZWFzZSBlbnRlciBhIGxldHRlcjogIik7CiAgICAgICAgICAgIFN0cmluZyBpZGVhID0gdXNlci5uZXh0TGluZSgpOwogICAgICAgICAgICBsZXR0ZXJDaGVjaygpOwoKICAgICAgICAgICAgaWYgKGd1ZXNzZXMuZXF1YWxzKHdvcmQpKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIllvdSBndWVzc2VkIHRoZSB3b3JkOiAiICsgZ3Vlc3Nlcyk7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIllvdSB3aW4hISIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaGUgd29yZCBsb29rcyBsaWtlIHRoaXM6IiArIGd1ZXNzZXMpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIllvdSBoYXZlICIgKyBhbW91bnRPZkd1ZXNzZXMgKyAibGVmdC4iKTsKICAgICAgICAgICAgaWYgKGFtb3VudE9mR3Vlc3NlcyA9PSAwKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZSB3b3JkIHdhczogIiArIHdvcmQpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJZb3UgbG9zZSEgR2FtZSBvdmVyISIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgU3RyaW5nIG51bWJlck9mTGV0dGVycygpIHsKICAgICAgICBTdHJpbmcgcmVzdWx0ID0gIiI7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3b3JkLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgIi0iOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgU3RyaW5nIHJhbmRvbSgpIHsKICAgICAgICBSYW5kb20gZ2FtZSA9IG5ldyBSYW5kb20oKTsKICAgICAgICBpbnQgaW5kZXggPSBnYW1lLm5leHRJbnQoY2hvaWNlcy5sZW5ndGgpOwogICAgICAgIFN0cmluZyBndWVzcyA9IGNob2ljZXNbaW5kZXhdOwogICAgICAgIHJldHVybiBndWVzczsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgbGV0dGVyQ2hlY2soKSB7CgogICAgICAgIGlmICh3b3JkLmluZGV4T2YobGV0dGVyKSA9PSAtMSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZXJlIGFyZSBubyAiICsgbGV0dGVyICsgIidzIGluIHRoZSB3b3JkLiIpOwogICAgICAgICAgICBhbW91bnRPZkd1ZXNzZXMtLTsKICAgICAgICB9CiAgICAgICAgaWYgKHdvcmQuaW5kZXhPZihsZXR0ZXIpICE9IC0xKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhlIGd1ZXNzIGlzIGNvcnJlY3QuIik7CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd29yZC5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgIGlmIChsZXR0ZXIgPT0gd29yZC5jaGFyQXQoaSkpIHsKICAgICAgICAgICAgICAgIGlmIChpID4gMCkgewogICAgICAgICAgICAgICAgICAgIGd1ZXNzZXMgPSBndWVzc2VzLnN1YnN0cmluZygwLCBpKSArIGxldHRlciArIGd1ZXNzZXMuc3Vic3RyaW5nKGkgKyAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICBndWVzc2VzID0gbGV0dGVyICsgZ3Vlc3Nlcy5zdWJzdHJpbmcoMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQp9