Allows a user to play the game bulls and cows


Write an application in Java that allows a user to play the game Bulls and Cows against a computer. The game works as follows: The computer chooses a 4-digit number in secret. The digits must all be different. The user then guesses the number and the computer provides the number of matching digits. If the matching digit is in the right position it is a "bull", if it is on a different position it is a "cow". For example:
Computer chooses: 3691
User guesses: 1649
Computer answers: 1 bull and 2 cows

If the user guesses a number with repeat digits that is partially correct the rule is that a correct digit can only count once and bulls count before cows. So for example
Computer chooses: 3691
User guesses: 4211
Computer answers: 1 bull and 0 cows

Your program should report the number of attempts the user needed to guess the number, it should let a user play as many times as they wish in a single session, and it should report their best, worst, and average performance over the course of the session.



Design: Your program must use the attached BullsandCows.java test class. This means that you must NOT write your own main method. Your code must work with the main method contained in BullsandCows.java



Your program should consist of two additional classes: Game and Oracle. All input and output should happen in the Game class. This is where you will ask the player for their guess and this is where you will tell the player how many bulls and cows they got. The Oracle class should store the actual computer choice as a String and have methods to determine how many bulls and cows any given guess would generate. I have provided templates for both of these classes. Edit these templates by adding code to the existing methods, creating new methods, and/or adding more instance variables. You are required to use these classes and the test class BullsandCows must remain unchanged. 


Second part: Write a class that automates the human user and requires on average less than 8 turns to guess a number. Write a new test class and a Simulator class (the Simulator class will sub for the Game class) to demonstrate this ability by playing 1000 games of computer versus computerized user and reporting the average number of guesses. 

Classes needed:
//***************************************
// This is the test class for the 
// Bulls and Cows 
//
// Your application must use this main method
//****************************************

public class BullsandCows{

public static void main(String[] args){
Game g = new Game();
g.play()


//***********************************
// This is a template for your Oracle
// class
//
//***********************************


public class Oracle{

private String solution;

public Oracle(){
// your code here for setting up
// an Oracle object
}

public int getBulls(String guess){
// your code here for 
// determining the number
// of bulls the String
// guess should earn
}

public int getCows(String guess){
// your code here for
// determing the number
// of cows the String
// guess should earn

// any other methods you might want
// in this class can go here

}

//**********************************************
// This is the Game class for the Bull and Cows
// program. You will need to modify this template
//
//**********************************************

public class Game{

private int turns;
private Oracle computer;
private Scanner input;

// you may need more instance variables here


public Game(){
// your code for the Game constructor goes here

}


public void play(){
// your code for the Game play method goes here

}

// any other methods you may need go here

Request for Solution File

Ask an Expert for Answer!!
JAVA Programming: Allows a user to play the game bulls and cows
Reference No:- TGS082823

Expected delivery within 24 Hours