/**
* Author: Tyler Knight
* Date Created: 02/07/2018
* Program Purpose: Guessing game using
* random numbers.
**/
//Importing random and scanner classes
import java.util.Random;
import java.util.Scanner;
public class ElusiveNumbers {
public static void main(String[] args) {
//Declare variables
Random num = new Random();
int userInput;
int answer;
int count;
int attempts;
int restart;
int terminate;
int range;
Scanner keyboard = new Scanner(System.in);
//Whitespace
System.out.println();
System.out.println();
try {
//Greeting Message
System.out.println("Welcome To Elusive Numbers!");
//Whitespace
System.out.println();
//Prompt user to enter number range
System.out.println("Enter the range of numbers you would like to guess from. EX: 5, 10, 100, 1000");
//Whitespace
System.out.println();
//Allows User To Enter Range
range = keyboard.nextInt();
//Whitespace
System.out.println();
//Prompt user to enter in however many chances they would like to have
System.out.println("Enter the amount of attempts you would like for this challenge");
//Whitespace
System.out.println();
//Allows user to set amount of attempts
attempts = keyboard.nextInt() - 1;
//Whitespace
System.out.println();
//Prompt user to guess the number
System.out.println("Enter a number between 1 and " + range);
//Whitespace
System.out.println();
System.out.println();
//Assign value to variables
answer = num.nextInt(range) + 1;
count = 0;
/*
* While the user input is not equal to the random generated number,
* it will tell the user if their number was too high or too low,
* it will also add 1 to the count variable every time user is wrong,
* if the count variable becomes equal to 3 "Game Over" will display,
* the user will then have the chance to try again or exit the game
*/
do {
//Assign value to variables
userInput = keyboard.nextInt();
restart = 1;
terminate = 0;
//If the count is higher than the attemps and user has not guessed the number, Game Over
if (count >= attempts && userInput != answer) {
//If user guess is too low, output Too Low!
if (userInput < answer) {
//Whitespace
System.out.println();
System.out.println("Too Low!");
}
//If user guess is too high, output Too High!
else if (userInput > answer) {
//Whitespace
System.out.println();
System.out.println("Too High!");
}
//Whitespace
System.out.println();
System.out.println("Game Over!");
//Whitespace
System.out.println();
System.out.println("To try again, type 1, to quit type 0");
//Whitespace
System.out.println();
userInput = keyboard.nextInt();
//Whitespace
System.out.println();
//If the user Chooses to restart the game will reset, Else the program will exit
if (userInput == restart) {
count = 0;
answer = num.nextInt(range) + 1;
System.out.println("Enter the range of numbers you would like to guess from. EX: 5, 10, 100, 1000");
//Whitespace
System.out.println();
range = keyboard.nextInt();
//Whitespace
System.out.println();
System.out.println("Enter the amount of attempts you would like for this challenge");
//Whitespace
System.out.println();
attempts = keyboard.nextInt() - 1;
//Whitespace
System.out.println();
System.out.println("Enter a number between 1 and " + range + "\t");
//Whitespace
System.out.println();
}
else if (userInput == terminate) {
return;
}
}
// If the counter is at it's limit but the answer is correct it will not go to game over
else if (count == 2 && userInput == answer) {
System.out.println("Great Job!");
System.out.println("To try again type 1, to quit type 0");
userInput = keyboard.nextInt();
//If user chooses to restart, everything will reset and game will start over
if (userInput == restart) {
count = 0; // Resets count
answer = num.nextInt(range) + 1; // Resets random number
System.out.println("Enter the range of numbers you would like to guess from. EX: 5, 10, 100, 1000");
//Whitespace
System.out.println();
range = keyboard.nextInt();
//Whitespace
System.out.println();
System.out.println("Enter the amount of attempts you would like for this challenge");
//Whitespace
System.out.println();
attempts = keyboard.nextInt() - 1;
System.out.println("Enter a number between 1 and " + range + "\t");
//Whitespace
System.out.println();
}
else if (userInput == terminate) {
return;
}
}
else if (userInput > answer) {
//Whitespace
System.out.println();
System.out.println("Too high!");
//Whitespace
System.out.println();
count = count + 1;
}
else if (userInput < answer) {
//Whitespace
System.out.println();
System.out.println("Too Low!");
//Whitespace
System.out.println();
count = count + 1;
}
//If guess is equal to random number, user wins and chooses whether or not to restart.
else if (userInput == answer) {
System.out.println("Great Job!");
System.out.println("To try again type 1, to quit type 0");
userInput = keyboard.nextInt();
if (userInput == restart) {
count = 0; //Resets count
answer = num.nextInt(range) + 1; //Resets random number
System.out.println("Enter the range of numbers you would like to guess from. EX: 5, 10, 100, 1000");
//Whitespace
System.out.println();
range = keyboard.nextInt();
//Whitespace
System.out.println();
System.out.println("Enter the amount of attempts you would like for this challenge");
//Whitespace
System.out.println();
attempts = keyboard.nextInt() - 1;
//Whitespace
System.out.println();
System.out.println("Enter a number between 1 and " + range + "\t");
//Whitespace
System.out.println();
}
else if (userInput == terminate) {
return;
}
}
}
while (userInput != answer || count < attempts);
}
//Exception Handler
catch (Exception all){
System.out.println("Please enter a valid integer and try again.");
}
}
}
This is a random number guessing game. This code works, but I am still pretty new to programming. I am hoping some of the more experienced developers can give me their input on everything. Does the code look neat enough? Is there a more efficient way I could have programmed this? All input is welcome, thank you all for your time.
Aucun commentaire:
Enregistrer un commentaire