Question: C++ Objective: Use inheritance, virtual functions, and abstract classes to implement a Polymorphic program. Program Description: You will create an abstract class called Monster. You

C++

Objective:

Use inheritance, virtual functions, and abstract classes to implement a Polymorphic program. Program Description: You will create an abstract class called Monster. You will then derive multiple classes from Monster: Goblin, Troll, Dragon. From Dragon, you will derive two additional classes: Ice Dragon and Fire Dragon. Each monster type will have unique abilities. This lab is more open ended than any of your previous ones. You are being given more freedom how you attack this program. With that in mind, the requirements will be less specific but make sure you are doing everything that is required.

Requirements:

Classes you must create

Monster

must be an abstract class

Each monster has

an attack()

randomly generate a number between 0 and strength for each attack (Strength 10 would generate 010)

add up all the damage done

return total damage

a number of attacks

a number for strength used during attacking

a string representing the type

accessor for type

Goblin

inherits from Monster

type is Goblin

has 1 attack

has strength of 30

when attacking has a 10% chance of doing double damage

Troll

inherits from Monster

type is Troll

has 2 attacks

has strength 60

when attacking has a 20% of doing 100 damage for each attack

Dragon

inherits from Monster

type is Dragon

has 4 attacks

has strength 100

when attacking has a 50% chance of gaining an additional attack

IceDragon

Inherits from Dragon

has all the attributes of a Dragon

type is Ice Dragon

has a 50% chance of the total damage being doubled

FireDragon

Inherits from Dragon

has all the attributes of a Dragon

type is Fire Dragon

has a 50% chance of attacking all over again (includes a new chance of having an additional attack as all Dragons have)

Each class must be defined in a header and implementation file named for the class (*.hpp and *.cpp). All filenames must be all lowercase (Ice Dragon > icedragon)

Each classes attack() function must output describing each attack as well as return total damage. See attached example text for good formatting.

Each header must have include guards

All numbers need to be integers

Monster.cpp

This file will demonstrate your monsters attacks

Use rand() from Use srand(1234) in main

Create an array of 100 Monster pointers

Randomly fill the array with objects of each type

Each type of Monster should have the same chance of being generated (20% rand() % 5)

See above examples for ideas of how to do this

Loop through the entire array and call attack()on each element of the array and output results

free dynamic memory

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!