Upcoming SlideShare
×

# Java Guessing Game Number Tutorial

531 views

Published on

This tutorial explains step by step writing a simple guessing game where the player guess the number selected by the computer and the goal is to introduce the power and usage of RANDOM as well as the how to benefit CURRENTTIMEMILLIS method of the System class in order to check how much it took the player guessing the correct number.

2 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
531
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
13
0
Likes
2
Embeds 0
No embeds

No notes for slide

### Java Guessing Game Number Tutorial

1. 1. 2014 JAVA Guessing Game Tutorial Written By: Azita Azimi Edited By: OXUS20 1/28/2014 Abdul Rahman Sherzad
2. 2. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game TABLE OF CONTENTS Introduction ....................................................... 3 Problem statement .................................................. 3 Plan and Algorithm Solution ........................................ 4 Code Break Down Step By Step ....................................... 6 Variables Declaration and Initialization ......................... 6 Outer Loop and Inner Loop ........................................ 7 Outer Loop ...................................................... 7 Inner Loop ...................................................... 8 Conclusion ......................................................... 9 2
3. 3. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game INTRODUCTION In this program we are supposed to make a simple guessing game where the user / player guess the number selected by the computer and the goal is to introduce the power and usage of random as well as the how to benefit currentTimeMillis() method of the System class in order to check how much it took the player guessing the number. PROBLEM STATEMENT It is worth having idea and knowledge how the guessing game works before jumping to the code. When the player runs the program the computer will choose a random number between 1 and 1000 and in the meanwhile the player will be prompted to guess a number between 1 and 1000 until he / she guesses the correct number; for every guess, the computer will either print "Your guess is too high", "Your guess is too low" or "your guess is correct" . Finally at the end of the game, the guessed number will be shown along with the number of guesses it took to get the correct number. See followings screenshots as demo: 3
4. 4. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game PLAN AND ALGORITHM SOLUTION Before jumping in the code it is worth planning and having a clear understanding of the steps required building the program. Both plan and code is needed; but plan first and then code. Following steps will act as a map and guide-line enabling the programmer to write the code easily and efficiently:  Create a new class including main() method  Create a constant MAX_NUMBER = 1000 indicating the highest guessing number  Generate random numbers between 1 and MAX_NUMBER which has the value of 1000 in our current case and scenario  Ask the computer choosing a number randomly and store it in a variable for later use and comparison against the player guess.  Ask the player to guess and input a number between 1 and MAX_NUMBER  Keep track of number of guesses the player played and input  Check whether the player guess is either correct, too high or too low comparing with the initial random selected number  Repeat the game until the player guess the correct number  Prompt the player the correct number and the total number of tries and how much time it took the player Next page demonstrates the complete source code of the Guessing Game Number and then we will explain the source code piece by piece … 4
5. 5. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game import java.util.Random; import javax.swing.JOptionPane; public class GuessingGameNumber { public static void main(String[] args) { // declare and initialize the required variables final int MAX_NUMBER = 1000; Random rand = new Random(); int guessed = 0; int choice = 1; String input = ""; // these calculate and display the execution time long start, end, duration; // outer loop ask whether you want to continue the game(YES/NO) do { int selected = rand.nextInt(MAX_NUMBER) + 1; int count = 0; start = System.currentTimeMillis(); // inner loop prompt you if your guess is high, low or correct do { input = JOptionPane.showInputDialog("Let's play the guessing game.n" + "Guess a number between 1 AND " + MAX_NUMBER); guessed = Integer.parseInt(input); count++; if (guessed > selected) { JOptionPane.showMessageDialog(null, "You guessed "" + guessed + "". Your guess is high!"); } else if (guessed < selected) { JOptionPane.showMessageDialog(null, "You guessed "" + guessed + "". Your guess is low!"); } else if (guessed == selected) { JOptionPane.showMessageDialog(null, "WOW! You guessed "" + guessed + "". Your guess is correct"); } } while (selected != guessed); end = System.currentTimeMillis(); duration = end - start; JOptionPane .showMessageDialog(null, "You guessed correctly. nThe correct guess was "" + selected + "".nYou tried " + count + " times, and " + (duration / 1000d) + " seconds."); choice = JOptionPane.showConfirmDialog(null, "Do you want to play again?", "Confirmation", JOptionPane.YES_NO_OPTION); } while (choice != JOptionPane.NO_OPTION); JOptionPane.showMessageDialog(null, "Thanks for playing"); } } 5
6. 6. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game CODE BREAK DOWN STEP BY STEP First and foremost we will start the program by creating a new class named "GuessingGameNumber.java" including the main method as follow: public class GuessingGameNumber { public static void main(String[] args) { } } VARIABLES DECLARATION AND INITIALIZATION Next step is to declare the required variables and initialize them to their default value in case it is needed as follow: // declare and initialize the required variables final int MAX_NUMBER = 1000; Random rand = new Random(); int guessed = 0; int choice = 1; String input = ""; // these calculate and display the execution time long start, end, duration; NOTE: Please notice you will get an error message when you try to use the Random class complaining that either you create the class or import it from the java class library. Therefore, you need to import the class using the Jave import statement at the very top of the program as follow: import java.util.Random; Please note that The same case is true while using the classes which are out of the java.lang.* packages for example the JOptionPane class which resides under the javax.swing package. 6
7. 7. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game OUTER LOOP AND INNER LOOP do { do { } while (selected != guessed); } while (choice != JOptionPane.NO_OPTION); OUTER LOOP When the program ends the Outer Loop is responsible giving option to the player if he / she still would to continue playing as well as resets the all the options i.e. the initial random selection, reset the start time and initial counter, etc. do { int selected = rand.nextInt(MAX_NUMBER) + 1; int count = 0; start = System.currentTimeMillis(); // inner loop prompt you if your guess is high, low or correct } while (choice != JOptionPane.NO_OPTION);     The variable selected store the initial guess of the program by the computer which is a number between range of 1 and 1000. The variable count is initialized with values of zero which keeps track of the number of times it took the user to guess the correct number. The variable start keeps track the game start time in order to calculates how much time it took the user to guess the correct number. Finally the while with condition executes when the player guess the number correctly and give the player the option of playing again and/or stop the game. 7
8. 8. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game INNER LOOP On the other hand the Inner Loop responsible comparing the player guess against the computer guess and then provides input option each time the user guess is incorrect. // Outer Loop Begin do { input = JOptionPane.showInputDialog("Let's play the guessing game.n" + "Guess a number between 1 AND " + MAX_NUMBER); guessed = Integer.parseInt(input); count++; if (guessed > selected) { JOptionPane.showMessageDialog(null, "You guessed "" + guessed + "". Your guess is high!"); } else if (guessed < selected) { JOptionPane.showMessageDialog(null, "You guessed "" + guessed + "". Your guess is low!"); } else if (guessed == selected) { JOptionPane.showMessageDialog(null, "WOW! You guessed "" + guessed + "". Your guess is correct"); } } while (selected != guessed); end = System.currentTimeMillis(); duration = end - start; JOptionPane.showMessageDialog(null, "You guessed correctly. nThe correct guess was "" + selected + "".nYou tried " + count + " times, and " + (duration / 1000d) + " seconds."); choice = JOptionPane.showConfirmDialog(null, "Confirmation", JOptionPane.YES_NO_OPTION); "Do you want to play again?", // Outer Loop End As it was mentioned the Inner Loop is responsible to provide entry option to the player using JOptionPane.showMessageDialog() method. It is worth mentioning everything reads from the keyboard is String and needs to be converted to int using the Integer.parseIn() method. Finally compare it against the computer guess as follow:    if (guessed > selected) {} // if player guess is higher than computer guess if (guessed < selected) {} // if player guess is lower than computer guess if (guessed == selected) {} // if player guess is equal computer guess When the guess is correct then the time will be recorded and the start time subtracted to calculate the amount of time it took the player and finally prompt the user with details. 8
9. 9. Guessing h ttps :// ww w.fa ceb oo k.co m/O xu s20 Game CONCLUSION You have noticed we have used Random class in this application to generate random numbers of integers in a specific range. Random class has many other useful methods where gives the power to generate random floating point numbers, etc. Using random concept inside the program has much usages in many application programs and areas for instance Lottery Applications, Random Advertisement, Random Security Images, Random Questions with Random Options, etc. In addition, we have used currentTimeMillis() method in this application to calculate how much time it took the player to guess the correct guessed number. This method is so usable in many other environments and cases such as optimization and measurement of algorithm, killing the execution process if the execution process took longer abnormal time, etc. 9