Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class helloWorld {
- private static final Character EMPTY_CHAR = 0;
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- // get the secret word
- System.out.println("Input Secret Word:");
- String secretWord = input.nextLine();
- int lives = 10;
- // list of guessed characters
- ArrayList<Character> lettersGuessed = new ArrayList<Character>();
- // play the game until no remaining lives
- while (lives > 0) {
- System.out.println("you have " + lives + "left.");
- System.out.println("Available letters: " + getRemainingPossibleLetters(lettersGuessed));
- System.out.print("please guess a letter: ");
- // get a guess character
- Character guessedLetter = input.nextLine().charAt(0);
- // check is already guessed, continue loop if yes
- if (lettersGuessed.contains(guessedLetter)) {
- System.out.println("Oops! You've already guessed that letter");
- continue;
- }
- // add to list of guessed characters
- lettersGuessed.add(guessedLetter);
- // get word progress
- String wordProgress = getWordProgress(secretWord, lettersGuessed);
- // check if char is in secret word
- if (isCharInWord(secretWord, guessedLetter)) {
- System.out.println("Good Guess: " + wordProgress);
- if (checkGameWon(secretWord, lettersGuessed)) {
- // if game won, break from loop
- break;
- } else {
- // contine loog if not won
- continue;
- }
- } else {
- // loose life if not in secret word
- lives--;
- System.out.println("Oops! wrong guess: " + wordProgress);
- }
- }
- if (lives > 0) {
- // won the game with remaining lives > 0
- System.out.println("Congrats!!");
- } else {
- // game lost
- System.out.println("Game Over!");
- }
- }
- /**
- * returns a boolean True if all the letters in secretWord are in lettersGuessed
- * loop through the letters of secretWord.
- *
- * @param secretWord
- * @param lettersGuessed
- * @return
- */
- static boolean checkGameWon(String secretWord, ArrayList<Character> lettersGuessed) {
- // replace guessed chars in secret word by space
- for (Character c : lettersGuessed) {
- secretWord = secretWord.replace(c, EMPTY_CHAR);
- }
- // remove spaces
- secretWord = secretWord.trim();
- // if secret word is "", the game is won
- return secretWord.length() == 0;
- }
- /**
- * how much of the word returns String comprised of letters and underscores
- * which represent letters not yet guessed in secretWord
- *
- * @param secretWord
- * @param lettersGuessed
- * @return
- */
- static String getWordProgress(String secretWord, ArrayList<Character> lettersGuessed) {
- String result = "";
- for (int i = 0; i < secretWord.length(); i++) {
- if (lettersGuessed.contains(secretWord.charAt(i))) {
- result += secretWord.charAt(i);
- } else {
- result += "_";
- }
- result += " ";
- }
- return result;
- }
- /**
- * letters left returns String comprised of letters that have not yet been
- * guessed the letters should appear in alphabetical order
- *
- * @param lettersGuessed
- * @return
- */
- static String getRemainingPossibleLetters(ArrayList<Character> lettersGuessed) {
- String remaining = "abcdefghijklmnopqrstuvwxyz";
- for (Character c : lettersGuessed) {
- remaining = remaining.replace(c, EMPTY_CHAR);
- }
- return remaining;
- }
- /**
- * return true is secretWord contains guessed letter
- *
- * @param secretWord
- * @param guessedLetter
- * @return
- */
- static boolean isCharInWord(String secretWord, Character guessedLetter) {
- // here we replace (if available) guessed letter in secret word
- // by an empty char, resulting word would not be equal to secret word
- // example: secretWord = test -- --
- // guessedLetter = 't' -->
- // result= true (resulting word :"es" not equal "test")
- // guessedLetter = 'a' -->
- // result= false (resulting word: "test" equal "test")
- return !secretWord.equals(secretWord.replace(guessedLetter, EMPTY_CHAR));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement