In: Computer Science
For this assignment you will write a Java program using a loop that will play a simple Guess The Number game. Create a new project named GuessANumber and create a new Java class in that project named GuessANumber.java for this assignment.
The program will randomly generate an integer between 1 and 200 (including both 1 and 200 as possible choices) and will enter a loop where it will prompt the user for a guess. If the user has guessed the correct number, the program will end with a message indicating how many guesses it took to get the right answer and a message that is determined by how many guesses it takes them to get the right answer. If the user guesses incorrectly, the program should respond with a message that the user has guessed either "too high" or "too low" and let them guess again.
Use the following table to determine the final message after the score is computed (note that your code MUST respond with these messages to be considered correct):
Number of Guesses Message ----------------- --------------------------------------------- 1 That was impossible! 2-3 You're pretty lucky! 4-7 Not bad, not bad... 8 That was not very impressive. 9-10 Are you having any fun at all? 11 or more Maybe you should play something else.
Sample Output This is a sample transcript of what your program should do. Items in bold are user input and should not be put on the screen by your program.
Enter a random seed: 99 Enter a guess between 1 and 200: 100 Your guess was too low - try again. Enter a guess between 1 and 200: 150 Your guess was too low - try again. Enter a guess between 1 and 200: 175 Your guess was too low - try again. Enter a guess between 1 and 200: 187 Your guess was too low - try again. Enter a guess between 1 and 200: 193 Your guess was too high - try again. Enter a guess between 1 and 200: 190 Your guess was too high - try again. Enter a guess between 1 and 200: 188 Congratulations! Your guess was correct! I had chosen 188 as the target number. You guessed it in 7 tries. Not bad, not bad...
Your code will behave differently based on the random value it selects and the choice taken by the user. Here is a second possible execution of this code:
Enter a random seed: 1024 Enter a guess between 1 and 200: 120 Your guess was too low - try again. Enter a guess between 1 and 200: 130 Your guess was too high - try again. Enter a guess between 1 and 200: 124 Congratulations! Your guess was correct! I had chosen 124 as the target number. You guessed it in 3 tries. You're pretty lucky!
If the user enters an invalid choice, your code should inform them that their choice was invalid and ask them to guess again.
Enter a random seed: 99 Enter a guess between 1 and 200: 259 Your guess is out of range. Pick a number between 1 and 200. Your guess was too high - try again. Enter a guess between 1 and 200: -1 Your guess is out of range. Pick a number between 1 and 200. Your guess was too low - try again. Enter a guess between 1 and 200: 188 Congratulations! Your guess was correct! I had chosen 188 as the target number. You guessed it in 3 tries. You're pretty lucky!
(Note that since the user picked the same random number seed as the first example, the program has selected the same value as the target number.)
Random numbers: Just like in the FunWithBranching programming assignment, you must use the Random class to generate numbers between 1 and 200. Make sure you are using int values and not doubles for this assignment!
Could you help me with how to set up the out of range part. Thanks
Please find the answer below, all the details are mentioned in the comments.
GuessANumber.java import java.util.Random; import java.util.Scanner; //class to GuessANumber public class GuessANumber { public static void main(String[] args) { //scanner to read user value Scanner sc = new Scanner(System.in); //get the seed value from the user int seed; System.out.print("Enter a random seed: "); seed = Integer.parseInt(sc.nextLine()); //create a Random object Random random = new Random(seed); //generate the secretNumber int secretNumber = random.nextInt(200) + 1; //create the counter int counter = 0; //set default guess value to the false boolean isGuessed = false; //loop till the isGuessed is not true while (!isGuessed) { //get the user input for the guess System.out.print("Enter a guess between 1 and 200: "); int guessNumber = Integer.parseInt(sc.nextLine()); counter++; //check the range of the guess number if (guessNumber < 1 || guessNumber > 200) { System.out.println("Your guess is out of range. Pick a number between 1 and 200."); } //check the guess number is correct, bigger or lower if (guessNumber > secretNumber) { System.out.println("Your guess was too high - try again."); System.out.println(); } else if (guessNumber < secretNumber) { System.out.println("Your guess was too low - try again."); System.out.println(); } else { System.out.println("Congratulations! Your guess was correct!"); System.out.println(); isGuessed = true; } } System.out.println("I had chosen " + secretNumber + " as the target number."); System.out.println("You guessed it in " + counter +" tries."); //print the message based on the counter value if (counter == 1) { System.out.println("That was impossible!"); } else if (counter == 2 || counter == 3) { System.out.println("You're pretty lucky!"); } else if (counter >= 4 && counter <= 7) { System.out.println("Not bad, not bad..."); } else if (counter == 8) { System.out.println("That was not very impressive."); } else if (counter == 9 || counter == 10) { System.out.println("Are you having any fun at all?"); } else if (counter >= 11) { System.out.println(" Maybe you should play something else."); } } }
Output:
Please let us know in the comments if you face any problems.