brainfrz icon

Hi-Lo Game

brainfrz | PRO | 09/26/15 06:24:23 PM UTC | 0 ⭐ | 832 👁️ | Never ⏰ | []
Java |

4.45 KB

|

None

|

0 👍

/

0 👎

/**************************************************************************************************
 *  Program Name:     Programming Project 4.8: Hi-Lo Game
 *  Author:           Terry Weiss
 *  Date Written:     September 26, 2015
 *  Program Description:
 *     Design and implement an application that plays the Hi-Lo guessing game with numbers. The
 *  program should pick a random number between 1 and 100 (inclusive) and then repeatedly prompt
 *  the user to guess the number. On each guess, report to the user that he or she is correct or
 *  that the guess is high or low. Continue accepting guesses until the user guesses correctly or
 *  chooses to quit. Use a sentinel value to determine whether the user wants to quit. Count the
 *  number of guesses, and report that value when the user guesses correctly. At the end of each
 *  game (by quitting or a correct guess), prompt to determine whether the user wants to play
 *  again. Continue playing games until the user chooses to stop. When the user stops playing, tell
 *  them how many games they've played.
 **************************************************************************************************/
 
import java.util.Scanner;
 
 
public class HiLoGame
{
    public static boolean userQuit( String str )
    {
        return (str.equals("q") || str.equals("quit"));
    }
 
    
    
    public static void main( String[] args )
    {
        final int MIN_NUMBER = 1, MAX_NUMBER = 100, INVALID_GUESS = -1;
        int correctNumber, guessedNumber, guesses, games;
        String guess, cont;
        Scanner input = new Scanner(System.in);
        
        
        games = 0;
        
        // Loop to keep playing until ready to quit
        do
        {
            correctNumber = MIN_NUMBER + (int)(Math.random() * MAX_NUMBER);
//          System.out.println("Debug: Current number is: " + correctNumber);
            guesses = 0;
            
            
            // Loop to keep guessing until correct or quit
            do
            {
                System.out.print("Please enter your guess between " + MIN_NUMBER + " and "
                        + MAX_NUMBER + " (\"q\" to quit):  ");
                guess = input.next();
                
                if (!userQuit(guess))
                {
                    try {
                        guessedNumber = Integer.parseInt(guess);
                        if (guessedNumber < MIN_NUMBER || guessedNumber > MAX_NUMBER)
                        {
                            System.out.print("That's not a valid guess. ");
                        }
                        else
                        {
                            if (guessedNumber > correctNumber)
                            {
                                System.out.println("Your guess was too high.");
                            }
                            else if (guessedNumber < correctNumber)
                            {
                                System.out.println("Your guess was too low.");
                            }
                            guesses++;
                        }
                    } catch (NumberFormatException e) {
                        System.out.print("That's not a number! ");
                        guessedNumber = INVALID_GUESS;
                    }
                }
                else
                {
                    guessedNumber = INVALID_GUESS;
                }
            } while ((guessedNumber != correctNumber) && !userQuit(guess));
 
            if (guessedNumber == correctNumber) // If it ended because they guessed correctly
            {
                String guessStr = (guesses == 1) ? "guess" : "guesses";
                
                System.out.println("Congratulations! " + correctNumber + " is correct. You guessed "
                        + "this in " + guesses + " " + guessStr + ".");
            }
            else // Otherwise they quit
            {
                System.out.println("The correct answer was " + correctNumber + ".");
            }
            
            games++;
            System.out.print("Keep playing?  ");
            cont = input.next();
            System.out.println();
        } while (cont.equals("y") || cont.equals("yes"));
        
        String gameStr = (games == 1) ? "game" : "games";
        System.out.println("Thanks for playing! You played " + games + " " + gameStr + ".");
    }
    
}

Comments