15247: Programming Assignment #2 (note: rubric is still under development) For this assignment, students will develop a turn-based ghost hunting game with two different levels of ghosts. The key learning objectives for this assignment are: ability to setup and use classes, understanding and using inheritance, use of overloaded constructors The overall game concept: You are a ghost hunter character in a game. You are trying to clear the ghosts from a haunted house. As you enter each room, you encounter ghosts that you must battle in order to move on. Once you have battled and destroyed 3 ghosts and the boss ghost, the house is cleared and it is ready for a family to move in. Since both ghost types share common attributes, you will setup a parent or super class for Ghost with the shared attributes. Then you will create subclasses that differentiate the specific characteristics of the regular or boss ghost. Both ghost types will have attributes for their name and the damage they inflict on a character. The default constructor for the base or super class will be to initialize the values to null and zero. Class Regular Ghost: A Regular ghost has a unique attribute for "health restored to the character once the battle is over and it has been defeated. This value will add to the health of the ghost hunter. This ghost class will have overloaded constructors for three types of ghosts 1) default (no parameters) is 20% chance of escape, 15 damage, and 10 health restore 2) Parameter for chance of escape and damage 3) Parameter for chance of escape, user defined damage levels, and health restore. The parameters will be set in the constructors based on asking the user if they want the game setting on easy, medium, or hard, Class BossGhost: A Boss ghost has a unique attributes for health and damage taken". There is one overloaded constructor for this class: health and damage inflicted are parameters based on the user difficulty setting. The amount of damage taken will be determined by the battle method chosen by the user. This will impact the health, so at a minimum, you will need setters and getters for the health attribute. 15247: Programming Assignment #2 (note: rubric is still under development) For this assignment, students will develop a turn-based ghost hunting game with two different levels of ghosts. The key learning objectives for this assignment are: ability to setup and use classes, understanding and using inheritance, use of overloaded constructors The overall game concept: You are a ghost hunter character in a game. You are trying to clear the ghosts from a haunted house. As you enter each room, you encounter ghosts that you must battle in order to move on. Once you have battled and destroyed 3 ghosts and the boss ghost, the house is cleared and it is ready for a family to move in. Since both ghost types share common attributes, you will setup a parent or super class for Ghost with the shared attributes. Then you will create subclasses that differentiate the specific characteristics of the regular or boss ghost. Both ghost types will have attributes for their name and the damage they inflict on a character. The default constructor for the base or super class will be to initialize the values to null and zero. Class Regular Ghost: A Regular ghost has a unique attribute for "health restored to the character once the battle is over and it has been defeated. This value will add to the health of the ghost hunter. This ghost class will have overloaded constructors for three types of ghosts 1) default (no parameters) is 20% chance of escape, 15 damage, and 10 health restore 2) Parameter for chance of escape and damage 3) Parameter for chance of escape, user defined damage levels, and health restore. The parameters will be set in the constructors based on asking the user if they want the game setting on easy, medium, or hard, Class BossGhost: A Boss ghost has a unique attributes for health and damage taken". There is one overloaded constructor for this class: health and damage inflicted are parameters based on the user difficulty setting. The amount of damage taken will be determined by the battle method chosen by the user. This will impact the health, so at a minimum, you will need setters and getters for the health attribute