Project 3: Implement the Pig Game . . . Requirements: An abstract class called Player.java: This class will be an abstract class. In other words, you cannot call "new" against it. It is the parent class of two others: Human.java and Computer.java. Both Human.java and Computer.java will use the data and methods from Player.java and MUST implement a method called beAPig, public abstract boolean beAPig(int roll_value); where roll_value is the current sum of the two die. which will return true or false based on the following rules: if the player is a computer, the beAPig function will return false for the following conditions: 1. the roll is 2: the game and total scores are set to 0 2. the roll contains a die with a "1" value, in the case the score for the turn is set to 0 3. if the current turn score is > 20 (let the human play!) 4. if the current total scores is 100 or greater (the computer wins). in all other cases, the computer will return true. If the player is the human, the beAPig function will retrn false for the following conditions: 1. the roll is 2: the game and total scores are set to 0 2. the roll contains a die with a "1" value, in the case the score for the turn is set to 0 The idea is as long as beAPig returns true, the current player can play. Also, Player.java should manage the data and methods for each player. So Player.java should have the data to keep track of the total score for the player, the score for the current turn, and the name of the player ("computer" or "human"). Of course, Player.java will have methdos to update the scores, return the score values, set and return the players name. So, the inheritance tree will look something like this: +----- Player. java ------+ | | | | Human.java Computer.java There should be another file called Game.java. Game.java will manage the game play. It will do the following: 1. create the two players: "computer" and "human" 2. use the PigDice class to roll the dice (PigDice only has the roll method) 3. if the beAPig method returns true, the current player may (if the current player is human) or will (if the current player is the computer) keep on playing. 4. Implements a method to switch players. 5. Game.java will drive the PigPanel.java behavior. Since we are now playing a game, the Game.java class will be the driver. So, all of the things PigDicereturned will now come from Game.java. Things like get the result of a roll, the ImageIcons of the die, and so forth. Note: Game.java is how PigPanel.java will get and set the game play.PigPanel.java should NOT instantiate and call the methods from the Human.java or Computer.java. The game play must come from Game.java. HINT HINT HINT: you can use polymorphism in Game.java to manage the players: private Player p1, p2, currentPlayer; p1 = new Human("Human)"; . . . We can do this because Human and Computer ARE players . . . Using the above may make your life easier . . . but it is not a requirement. PigPanel.java will change in the following ways: 1. No calls to PigDice.java . . . PigDice will be called and used by Game.java 2. Buttons: along with a Roll button, there must be a button for the human to give up his turn (the computer doesn't have one at the computer's play is programmatically controlled). 3. New messages aka JLabels ("you've won!", "your turn is over", etc.) 4. NOTE! you can set buttons visible(true or false) to "hide" buttons.