construct a Bulls and Cows program for my intro Java class. This program needs to perform the basic functions of the game (determining how many cows there are and how many bulls there are and tell the player when they win), but it also needs to offer the option to play again and record top score, low score, and average score over the games played in one session. I have the basic code down, but I'm having a hard time figuring out how to give the option to play again and print the high, low, and average scores. Can anyone help? My code is below.
public class Tester
{
public static void main (String[] args)
{
Game g = new Game();
g.play();
}
}
public class Game
{
int turns = 0;
Player p = new Player();
Oracle o = new Oracle();
public void play ()
{
String generated_number = o.generateNumber();
System.out.println(" generated_number is " + generated_number);
int[] a= {0,0};
while(a[0]<4)
{
String Guessed_number = p.makeGuess();
// a[0] represents bulls and a[1] represents cows.
// we need this information to be returned from compare function
// so used array here.
// array is the only way to return multiple values from function.
o.compare(generated_number,Guessed_number, a);
System.out.println(a[0] + " bull(s) and " + a[1] + " cow(s)");
turns++;
}
System.out.println("Correct! You took " + turns + " guesses.");
}
}
import java.util.Scanner;
public class Player
{
String yourGuess;
public Player(){}
public String makeGuess()
{
Scanner in = new Scanner(System.in);
System.out.println("Guess a four-digit number");
return in.next();
}
}
import java.util.Random;
public class Oracle
{
public Oracle() {}
public String generateNumber()
{
Random generator = new Random();
int a = 0;
int b = 0;
int c = 0;
int d = 0;
while(a==b||a==c||a==d||b==c||b==d||c==d)
{
a = generator.nextInt(10);
b = generator.nextInt(10);
c = generator.nextInt(10);
d = generator.nextInt(10);
}
String generatedNumber = "" +a+b+c+d;
return generatedNumber;
}
public static void compare(String generatedNumber, String yourGuess, int[] a)
{
a[0] = a[1]=0;
for (int i=0; i<4; i++)
{
for (int j=0; j<4; j++)
{
if (generatedNumber.charAt(i)==yourGuess.charAt(j))
{
if (i==j)
{
a[0]++;
}
else
{
a[1]++;
}
}
}
}
}
}