import java.util.Scanner;
public class HangMan {

  public HangMan() {}
  
  String[] letters = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",}; 
  boolean gameOver = false;
  public boolean win;
  String gameWord = "";  
  int lives = 5;

  String[] guessed = {" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "};
  String[] words = {"jazz", "orrery", "alphabetical", "frantic", "quiz", "print"};

                                                                                  //if a new word you want to add is longer than 11 characters make lines 6, 12, 23, and 45 change in length accordingly
                                                                                  //the program does not know how to deal with words of four of the same letter in it but three is alright
  public void playGame() {
    gameWord = words[wordNum()];
    lives = 5;
    int b = 0;
    while (!gameOver) {
      printMan(lives);
      ln("\n" + letters[0] + " " + letters[1] + " " + letters[2] + " " + letters[3] + " " + letters[4] + " " + letters[5] + " " + letters[6] + " " + letters[7] + " " + letters[8] + " " + letters[9] + " " + letters[10] + " " + letters[11]);
      Scanner in = new Scanner(System.in);
      String Guess = "";
      while (Guess.length() != 1) {
      ln("pick a letter:");
      Guess = in.nextLine();
      guessed[b] = Guess;
      }
      b++;
      if (gameWord.contains(Guess)) {
        letters[gameWord.indexOf(Guess)] = Guess;
        if (gameWord.lastIndexOf(Guess) != gameWord.indexOf(Guess)) {
          letters[gameWord.lastIndexOf(Guess)] = Guess;
        }
        if (gameWord.indexOf(Guess) != gameWord.indexOf(Guess, gameWord.indexOf(Guess)+1) && gameWord.lastIndexOf(Guess) != gameWord.indexOf(Guess)+1) {
          if (gameWord.indexOf(Guess, gameWord.indexOf(Guess)+1) != -1) {
          letters[gameWord.indexOf(Guess, gameWord.indexOf(Guess)+1)] = Guess;
          }
        }
      } else {
        lives--;
      }
      if (letters[0] != "_" && letters[1] != "_" && letters[2] != "_" && letters[3] != "_" && letters[4] != "_" && letters[5] != "_" && letters[6] != "_" && letters[7] != "_" && letters[8] != "_" && letters[9] != "_" && letters[10] != "_" && letters[11] != "_") {
        gameOver = true;
        win = true;
        in.close();
      }
      if (lives <= 0) {
        gameOver = true;
        win = false;
        in.close();
      }
    }
  }
  
                                            //to add words add another else if with the number of characters of the word
  public int wordNum() {
    int a = (int)(Math.random()*6);
    if (a == 0 || a == 4) { 
      letters[0] = "_";
      letters[1] = "_";
      letters[2] = "_";
      letters[3] = "_";
    } else if (a == 5) {
      letters[0] = "_";
      letters[1] = "_";
      letters[2] = "_";
      letters[3] = "_";
      letters[4] = "_";
    } else if (a == 1) {
      letters[0] = "_";
      letters[1] = "_";
      letters[2] = "_";
      letters[3] = "_";
      letters[4] = "_";
      letters[5] = "_";
    } else if (a == 3) {
      letters[0] = "_";
      letters[1] = "_";
      letters[2] = "_";
      letters[3] = "_";
      letters[4] = "_";
      letters[5] = "_";
      letters[6] = "_";
    } else {
      letters[0] = "_";
      letters[1] = "_";
      letters[2] = "_";
      letters[3] = "_";
      letters[4] = "_";
      letters[5] = "_";
      letters[6] = "_";
      letters[7] = "_";
      letters[8] = "_";
      letters[9] = "_";
      letters[10] = "_";
      letters[11] = "_";
    }
    return a;
  }
  
  public void printMan(int k) {
    if (k == 5) {
      ln("   +---------+5");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
    }
    if (k == 4) {
      ln("   +---------+4");
      ln("             |");
      ln("  / \\        |");
      ln("  \\ /        |");
      ln("             |");
      ln("             |");
      ln("             |");
      ln("             |");
    }
    if (k == 3) {
      ln("   +---------+3");
      ln("             |");
      ln("  / \\        |");
      ln("  \\ /        |");
      ln("  /|\\        |");
      ln("             |");
      ln("             |");
      ln("             |");
    }
    if (k == 2) {
      ln("   +---------+2");
      ln("             |");
      ln("  / \\        |");
      ln("  \\ /        |");
      ln("  /|\\        |");
      ln("   |         |");
      ln("             |");
      ln("             |");
    }
    if (k == 1) {
      ln("   +---------+1");
      ln("             |");
      ln("  / \\        |");
      ln("  \\ /        |");
      ln("  /|\\        |");
      ln("   |         |");
      ln("  / \\        |");
      ln("             |");
    }
    if (k <= 0) {
      ln("   +---------+");
      ln("   |         |");
      ln("  / \\        |");
      ln("  \\ /        |");
      ln("  /|\\        |");
      ln("   |         |");
      ln("  / \\        |");
      ln("             |");
      ln("gane over!\nType 1 to restart");
    }
  }
  
  public void ln(String a) {
    System.out.println(a);
  }

  public void endText(boolean w) {
     if (w) {
       ln("You Win!\nThe letters you guessed were:");
       for (String a : guessed) {
         if (a != " ") {
           System.out.print(a + " "); 
         }
       }
       System.out.println("\n" + gameWord);
     } else {
       ln("You Lost!\nThe letters you guessed were:");
       for (String a : guessed) {
         if (a != " ") {
           System.out.print(a + " "); 
         }
       }
       System.out.println("\nThe word was: " + gameWord);
     }
  }

}