To first give you an overall feeling for the finished game, we first .docx
1. To first give you an overall feeling for the finished game, we
first present a dialog to show how the game will be played. The
user is prompted for a "secret" number and w ill be told if it is
invalid. The user is also given the choice of entering a -1 to let
the program generate a secret number. A program generated
secret number is a five digit number stored as a String as in
"01234" or "92745" but not" 1234". "12344", or "
123z7". This number can be generated using the existing well-
tested method public string generate Secret Number (). The
game should then prompt the "game player" to guess the
number The input is error checked only to ensure the user enters
a string of length 5. Entering "what?" will not help at all. but
it should be allowed and should count as a try at the secret
number. If the user enters "123456" or "1234", notify the
user they must enter 5 digits but do not count this as an attempt
at the secret number. The game rules insist that you give the
player some feedback on guesses. Based on that feedback, the
player makes more guesses. Guessing continues until the
"secret'' number is guessed or until the maximum number of
tries (32) is reached. Here is one sample dialog that plays one
game where we, the users, actually input the 'secret' number as
12345. Later on. enter -i to let the real Master Mind experiences
begin. Enter the secret number as a 5 digit number where all
digits are unique, or enter -1 to have this program select the
secret number. Select your own valid secret number or enter -1:
what? 'what?' is not a valid secret number. Select your own
valid secret number or enter -1: 123456 '123456?' is not a
valid secret number. Select your own valid secret number or
enter -1: 12233 '12233' is not a valid secret number. Select
your own valid secret number or enter -1: 12345 Enter your S
digit guess: 11111 Try number: 1 Digits found: 1 Correct
position: 1 Enter your 5 digit guess: 22222 Try number: 2 Digits
found: 1 Correct position: 1 Enter your 5 digit guess: 99999 Try
number: 3 Digits found: 0 Correct position: 0 Enter your 5 digit
guess: 12333 Try number: 4 Digits found: 3 Correct position: 3
2. Solution
Java Code :
import java.util.Random;
import java.util.Scanner;
public class Game {
String secretNumber = "12345" ;
String userGuess =null;
int tryCount = 0, digitCount = 0, positionCount = 0;
public void digitsFound(){
digitCount=0;
for(int i=0;i < 5;i++){
for(int j=0;j<5;j++){
if(secretNumber.charAt(i) == userGuess.charAt(j)){
digitCount++;
}
}
}
3. }
public void correctPositions(){
positionCount=0;
for(int j=0;j<5;j++){
if(secretNumber.charAt(j) == userGuess.charAt(j)){
positionCount++;
}
}
}
public static void main(String args[]){
boolean isSecretNumber = false;
Scanner input = new Scanner(System.in);
Game player1 = new Game();
System.out.println("Enter the secret number as a 5 digit
number where all the digits are Unique, or enter -1 to have this
program select secret number.");
while(isSecretNumber == false){
System.out.println("select your own valid secret
number or enter -1");
player1.secretNumber = input.nextLine();
4. if(player1.secretNumber.equalsIgnoreCase( "-1")){
player1.secretNumber =
player1.generateSecretNumber();
isSecretNumber = true;
}
else{
if(player1.secretNumber.length() != 5){
System.out.println(player1.secretNumber + "? is
not a valid secret Number ");
continue;
}
if(!player1.secretNumber.matches( "d+")){
//regular expression to check input is numeric string.
System.out.println(player1.secretNumber + "? is
not a valid secret Number ");
continue;
}
for(int i=0;i<5;i++){
for(int j=i+1;j<5;j++){
if(player1.secretNumber.charAt(i)==
player1.secretNumber.charAt(j)){
System.out.println(player1.secretNumber +
5. "? is not a valid secret Number");
continue;
}
}
}
isSecretNumber = true;
}
}
while(player1.positionCount!=5 || player1.tryCount > 32){
System.out.print("Enter the 5 digit guess :");
player1.userGuess = input.nextLine();
if(player1.userGuess.length() != 5){
System.out.println(player1.secretNumber + "? is not a
valid guess Number");
continue;
}
player1.tryCount++;
player1.digitsFound();
player1.correctPositions();
System.out.println("Try Number : "+
player1.tryCount+" Digit Found : "+ player1.digitCount+ "
Current Position : " + player1.positionCount+" ");
}
6. if(player1.tryCount > 32){
System.out.println("Game Over , maximum guess
reached(32)");
}
if(player1.positionCount == 5 && player1.tryCount
<=32){
System.out.println("Game Won ! congratulations...");
}
}
private String generateSecretNumber() {
Random num = new Random();
int digit1,digit2,digit3,digit4,digit5;
digit1 = num.nextInt(9)+1;
do{
digit2 = num.nextInt(10);
}while(digit2==digit1);
do{
digit3 = num.nextInt(10);
}while(digit3 == digit1 || digit3 == digit2);