Explore the English language on a new scale using AI-powered English language navigator.
## Practice. Developing "number guessing game" step by stepIn the lesson we will practise using the basic Java tools learned in previous articles. To do it let's develop the "Guess game". Its rules are as follows: - Computer proposes a number from 1 to 1000.
- Human player tries to guess it. One enters a guess and computer tells if the number matches or it is smaller/greater than the proposed one.
- Game continues, until player guesses the number.
## Step 1. Class & main functionLet's call the class "NumberGuessingGame" and add empty main function. It's completely valid program you can compile and run, but it doesn't print anything to the console yet.
} } ## Step 2. Secret numberTo propose a secret number, we declare a variable
secretNumber = ( System. } } Secret number is 230
Don't worry, if you don't understand how things with random work. It's not a subject of the lesson, so just believe it. Note, that program exposes secret number to player at the moment, but we will remove the line printing the proposal in the final version. ## Step 3. Asking user for a guessIn order to get input from user, we declare another variable
secretNumber = ( System. // later Scanner keyboard = System. guess = keyboard.nextInt(); System. } }Secret number is 78 ## Step 4. Checking if guess is rightNow let's check if human player's guess is right. If so program should print corresponding message. Otherwise, tell user that a guess is smaller/greater than the proposed number. To test the program let's try all three cases (remember that we peeked the secret number).
secretNumber = ( System. // later Scanner keyboard = System. guess = keyboard.nextInt(); System. System. System. .println("Your guess is smaller than the secret number."); System. .println("Your guess is greater than the secret number."); } } Secret number is 938 Secret number is 478 Secret number is 559 Things seem to be working ok. ## Step 5. Add triesAt the moment user has only one attempt to guess a number, which is, obvious, not sufficient. Our next step is about giving user as many attempts as one needs. For this purpose let's use do-while loop, because user must enter a guess at least once.
secretNumber = ( System. // later Scanner keyboard =
System. guess = keyboard.nextInt(); System. System. System. .println("Your guess is smaller than the secret number."); System. .println("Your guess is greater than the secret number."); } } } Secret number is 504 Enter a guess: 777 Your guess is 777 Your guess is greater than the secret number. Enter a guess: 333 Your guess is 333 Your guess is smaller than the secret number. Enter a guess: 504 Your guess is 504 Your guess is correct. Congratulations! ## Final step. Make it glowJust before we consider the program to be complete, let's remove the code, used for debug purposes.
secretNumber = ( Scanner keyboard = System. guess = keyboard.nextInt(); System. System. .println("Your guess is smaller than the secret number."); System. .println("Your guess is greater than the secret number."); } } } Enter a guess (1-1000): 500 Your guess is greater than the secret number. Enter a guess (1-1000): 250 Your guess is smaller than the secret number. Enter a guess (1-1000): 375 Your guess is smaller than the secret number. Enter a guess (1-1000): 437 Your guess is smaller than the secret number. Enter a guess (1-1000): 468 Your guess is smaller than the secret number. Enter a guess (1-1000): 484 Your guess is greater than the secret number. Enter a guess (1-1000): 476 Your guess is greater than the secret number. Enter a guess (1-1000): 472 Your guess is correct. Congratulations! ## Extra tasksIf you would like to practise on your own, there are suggestions of possible improvements: - Check, if user enters the number in range 1.1000 and force one to re-enter a guess in case it is out of bounds.
- Limit the number of attempts.
- Add more than one round and wins/loses score.
## Algorithmic part. Binary search algorithmHow would you answer the question: "How much attempts one needs the most to guess the number?" The right answer is 10. Check binary search algorithm explanation to see why. Partners Ads |