import java.util.Scanner;
import java.util.Random;
public class GuessingGameBest
{
public static final int MAX = 5;
public static void main
(String[] args
) {
//Create a scanner object to read from the keyboard
Scanner keyboard
= new Scanner
(System.
in);
//Create a random object
//Identifier declarations
int num;
int guesses;
int guess=MAX;
int bestGuess=MAX; //variable for keeping track of best guess
int totalGames=0;
int totalGuesses=0;
//Begins program
haikuIntroduction();
do {
num = number.nextInt(MAX) + 1;
programIntroduction();
for (guesses = 1 ; guesses <= MAX ; guesses++) {
System.
out.
print("Your guess? "); guess = keyboard.nextInt();
totalGuesses++;
if (guess > num) {
System.
out.
println("It's lower."); }
else if (guess < num) {
System.
out.
println("It's higher."); }
else if (guess == num) {
System.
out.
println("You got it right in " + guesses
+ " guesses!"); break;
}
}
if(bestGuess>guesses) //for updating the best guess variable
bestGuess=guesses;
totalGames++;
System.
out.
print("Do you want to play again? "); playAgain = keyboard.next();
}
while (playAgain.startsWith("y") || playAgain.startsWith("Y"));
System.
out.
println("Overall Results:"); System.
out.
println("Total games = " + totalGames
); System.
out.
println("Total guesses = " + totalGuesses
); double grade = (double)totalGuesses / (double)totalGames;
System.
out.
println("Guesses/game = " + grade
); System.
out.
println("Best game = " + bestGuess
); }
//Haiku introduction
public static void haikuIntroduction() {
System.
out.
println("Let's Play a Game Now."); System.
out.
println("It is a Fun Guessing Game."); System.
out.
println("Try Your Best, Begin."); }
//Program introduction
public static void programIntroduction() {
System.
out.
println("I'm thinking of a number between 1 and 5..."); }
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKCnB1YmxpYyBjbGFzcyBHdWVzc2luZ0dhbWVCZXN0CnsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVggPSA1OwogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICAgewogICAgICAgICAgCiAgICAgICAgIC8vQ3JlYXRlIGEgc2Nhbm5lciBvYmplY3QgdG8gcmVhZCBmcm9tIHRoZSBrZXlib2FyZAogICAgICAgICBTY2FubmVyIGtleWJvYXJkID0gbmV3IFNjYW5uZXIgKFN5c3RlbS5pbik7CiAgICAgICAgICAKICAgICAgICAgLy9DcmVhdGUgYSByYW5kb20gb2JqZWN0CiAgICAgICAgIFJhbmRvbSBudW1iZXIgPSBuZXcgUmFuZG9tKCk7CiAgICAgICAgICAKICAgICAgICAgLy9JZGVudGlmaWVyIGRlY2xhcmF0aW9ucwogICAgICAgICBpbnQgbnVtOwogICAgICAgICBpbnQgZ3Vlc3NlczsKICAgICAgICAgaW50IGd1ZXNzPU1BWDsKICAgIAkgaW50IGJlc3RHdWVzcz1NQVg7ICAvL3ZhcmlhYmxlIGZvciBrZWVwaW5nIHRyYWNrIG9mIGJlc3QgZ3Vlc3MKICAgICAgICAgaW50IHRvdGFsR2FtZXM9MDsKICAgICAgICAgaW50IHRvdGFsR3Vlc3Nlcz0wOwogICAgICAgICAgCiAgICAgICAgIC8vQmVnaW5zIHByb2dyYW0KICAgICAgICAgU3RyaW5nIHBsYXlBZ2FpbjsKICAgICAgICAgaGFpa3VJbnRyb2R1Y3Rpb24oKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgIG51bSA9IG51bWJlci5uZXh0SW50KE1BWCkgKyAxOwogICAgICAgICAgICAgIHByb2dyYW1JbnRyb2R1Y3Rpb24oKTsKICAgICAgICAgICAgICBmb3IgKGd1ZXNzZXMgPSAxIDsgZ3Vlc3NlcyA8PSBNQVggOyBndWVzc2VzKyspIHsKICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiWW91ciBndWVzcz8gIik7CiAgICAgICAgICAgICAgICAgIGd1ZXNzID0ga2V5Ym9hcmQubmV4dEludCgpOwogICAgICAgICAgICAgICAgICB0b3RhbEd1ZXNzZXMrKzsKICAgICAgICAgICAgICAgICAgaWYgKGd1ZXNzID4gbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJdCdzIGxvd2VyLiIpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGd1ZXNzIDwgbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJdCdzIGhpZ2hlci4iKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIGlmIChndWVzcyA9PSBudW0pIHsKICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIllvdSBnb3QgaXQgcmlnaHQgaW4gIiArIGd1ZXNzZXMgKyAiIGd1ZXNzZXMhIik7CiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CgkJCSAgaWYoYmVzdEd1ZXNzPmd1ZXNzZXMpIC8vZm9yIHVwZGF0aW5nIHRoZSBiZXN0IGd1ZXNzIHZhcmlhYmxlCgkJCQliZXN0R3Vlc3M9Z3Vlc3NlczsKICAgICAgICAgICAgICB0b3RhbEdhbWVzKys7CiAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRG8geW91IHdhbnQgdG8gcGxheSBhZ2Fpbj8gIik7CiAgICAgICAgICAgICAgcGxheUFnYWluID0ga2V5Ym9hcmQubmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChwbGF5QWdhaW4uc3RhcnRzV2l0aCgieSIpIHx8IHBsYXlBZ2Fpbi5zdGFydHNXaXRoKCJZIikpOwogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPdmVyYWxsIFJlc3VsdHM6Iik7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgZ2FtZXMgICAgPSAiICsgdG90YWxHYW1lcyk7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgZ3Vlc3NlcyA9ICIgKyB0b3RhbEd1ZXNzZXMpOwogICAgICAgICBkb3VibGUgZ3JhZGUgPSAoZG91YmxlKXRvdGFsR3Vlc3NlcyAvIChkb3VibGUpdG90YWxHYW1lczsKICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJHdWVzc2VzL2dhbWUgICA9ICIgKyBncmFkZSk7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmVzdCBnYW1lICAgICAgID0gIiArIGJlc3RHdWVzcyk7CiAgICAgfQogICAgIAogICAgIC8vSGFpa3UgaW50cm9kdWN0aW9uCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIGhhaWt1SW50cm9kdWN0aW9uKCkgewogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxldCdzIFBsYXkgYSBHYW1lIE5vdy4iKTsKICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJdCBpcyBhIEZ1biBHdWVzc2luZyBHYW1lLiIpOwogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyeSBZb3VyIEJlc3QsIEJlZ2luLiIpOwogICAgIH0KICAgICAKICAgICAvL1Byb2dyYW0gaW50cm9kdWN0aW9uCiAgICAgcHVibGljIHN0YXRpYyB2b2lkIHByb2dyYW1JbnRyb2R1Y3Rpb24oKSB7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkknbSB0aGlua2luZyBvZiBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDUuLi4iKTsKICAgICB9Cn0=