Write a Java program that simulates the battle between a cat and mice.
Cat Kills 1 mouse a day, and does not reproduce.
Mice have a chance to reproduce as long as required conditions are met. Reproduction only happens when mice are over 1, and 1 of each sex is present.
Simulation continues as long as mice population is greater than 1 and less than 10.
Simulation should generate following output depending on if the population of mice is greater than or equal to 10, or no mice left:
Mice RULE, Cats Drool Mice Population: ## (integer value)
Or
Cats RULE, Mice Drool Cat Weight (in mice): ##.## (double value, 2 decimal places)
Sample session (requires no user input):
Mice RULE, Cats Drool Mice Population: 11
Press any key to continue . . .
Cats RULE, Mice Drool Cat Weight (in mice): 2.03
Press any key to continue . . .
Mice RULE, Cats Drool Mice Population: 10
Press any key to continue . . .
Cats RULE, Mice Drool Cat Weight (in mice): 2.05
Press any key to continue . . .
The program should consist of following files:
1. LastFirstWeek5CatMouse.java (driver program)
Driver main method should be as shown below. Add appropriate code in it to generate simulation output.
import java.util.ArrayList;
public class LastFirstWeek5CatMouse
{
public static void main(String [] args)
{
cat sylvester = new cat();
ArrayList mice = new ArrayList();
mice.add(new mouse());
mice.add(new mouse());
mice.add(new mouse());
mice.get(0).setSex(true);
mice.get(1).setSex(false);
mice.get(2).setSex(false);
while (mice.size() >1 && mice.size() < 10)
{
for (mouse m:mice)
m.grow();
sylvester.grow();
mouse.mate(mice);
sylvester.eat(mice);
}
}
}
2. Mammal.java
Instance variables: name (string), age (integer), weight (double), isMale (Boolean)
class mammal constructor : (default constructor) Set age to 1.
grow method : Increases age of mammal by 1.
Accessor / mutator methods for each instance variable above, set or return values as appropriate for data type specified.
3. Cat.java (extends Mammal class)
eat method: Receives mouse arraylist as argument.
Randomly removes a mouse from the population 70% of the time and increases cat weight by the chosen mouse weight. Only increase weight if mouse is removed/eaten.
grow method: Set the cat's age to the current age plus 1. (Use accessor/mutator methods.)
4. Mouse.java (extends Mammal class)
class mouse constructor: (default constructor) Randomly choose sex and assign to isMale as appropriate. Set age to 1. Set weight to 1.
grow method: Increase age of mouse by 1 and weight of mouse by 1% of current weight.
mate method: (static method, receive mouse arraylist as argument) Randomly choose 2 mouse objects from arraylist and if the required conditions are met, proceed with mating. Successful mating conditions are: 1 male and 1 female mouse, both mice older than 1 day. If successful mating happens, randomly create between 0-4 mice and append to arraylist received as argument.