Question: Objectives: To gain experience with dynamic memory allocation, inheritance, polymorphism, and class composition.(c++ coding) Description: For this project you are going to make some sort
Objectives:
To gain experience with dynamic memory allocation, inheritance, polymorphism, and class composition.(c++ coding)
Description:
For this project you are going to make some sort of adventure game. The plot of your game is up to you. You may have a warrior who wonders around in a dungeon fighting monsters, or a series of items to collect in order to achieve a goal. Be creative. I'm hoping you will have some fun designing your own plot, so come up with something you don't mind reusing for future projects (we will be adding to the game throughout the term).
The game will basically be played on a 2D grid. Each location on the grid will be a location that the character can visit. Different events may take place at various locations. What happens at each location is up to you. However, there needs to be tasks for the player to accomplish at multiple locations in order to win the game.
Requirements:
You must write a series of classes to complete the project.
CLASS #1: The Player class. You can probably reuse your class from Project 2 here (plus any additions specific for your game). At a minimum, you need to have a class which describes the character playing the game.
CLASS #2: The Location class. This should be a generic class that will serve as the base for other classes. At a minimum, it should have an attribute called visited, that tracks whether or not the player has been to a particular location. The constructor of this class should set this value to false. You may have certain events that only occur the first time the player visits a location. For instance, if there is an item in a location that the player retrieves, then the item should not be in the location the next time the player is there. This variable will help you to determine when a player has visited a location. This class should also have a virtual function called visit. This function will be overloaded in the derived classes.
CLASSES #3-5: You should have at least three other classes that inherit from the location class. These classes describe different activities which the player can do at various locations in your game. For instance, you may have a location where the player fights a monster, or has to answer a riddle. Each of these classes describes a unique type of location with a specific event that can occur in the game. Each of these classes should overload the visit method inherited from the Location class to describe the event specific to the class.
CLASS 6: The Game class. You should have a class that is composed of a two dimensional dynamically allocated array of pointers to Locations. This class should have a method to read a data file and a method called playGame, which actually plays the game. Feel free to add other attributes and methods to this class as you feel they are needed. The read data file method should read a data file (in the format described below) and then dynamically allocate the locations array to the appropriate size. The playGame method should allow players to travel around in the game world and do the actions specific to each location. This method is also responsible for determining when the game ends.
You must write separate .h files for each class. You should also use good commenting and code style. Expect points to be deducted from your score if you do not comment your code and use good coding practices.
You may not use global variables or GOTO statements.
That is it for the requirements, the rest is up to you. Feel free to add to the classes as much as you want to make your game fun and exciting. At a minimum, there must be at least four things for the player to do to win the game.
The Data File:
The purpose of the data file is to make it easy to modify and/or change your game. The data file should begin with two numbers that tell how many rows and how many columns will be in the two dimensional array of pointers to locations in the Game class. Following that, will be the actual data about the specific locations. Here is an example of what a data file might look like:
3 4 o castle o goblin crystal o o goblin o goblin o goblin
The first line (with 3 4) tells the program to expect 3 rows and 4 columns of data to follow. After this is the data about each location. The "o" just means that it is a basic location with no special action (CLASS #2). Castle, Goblin, and Crystal are all special locations that have an event for the player to perform (CLASSES #3-5). You should replace the words castle, crystal, and goblin with the actual names of the classes you created for your project. As your program reads this data file, it should dynamically create objects of the appropriate types and place these objects into the two dimensional array in the appropriate locations.
Your data file does not have to look anything like the example above. Feel free to make it more complex if it would improve your game in some way.
HINTS:
Do not try to build the whole project all at once. Work on it one small piece at a time, make sure what you have done compiles, then move on to something else. There will be lots of help given in class on this project, so come to every class period! You may work with one other person on this assignment. If you choose to work with a partner, you must do the following: 1) Comment all code with the name(s) of the programmer(s) primarily responsible for the code. If you worked on the portion collaboratively, then state that. 2) In the comments of the file that contains your main function, clearly indicate both of your names as the authors of the project.
What to hand in:
You should upload a single .zip file that contains the entire Visual Studio project you created (all .cpp, .h, .sln, and .exe files should be included). Expect significant points to be deducted from your submission if this is not done correctly. If you worked with a partner both of you should submit identical copies of the project.
This is the file for player
#player.cpp
#include
player::player() { name = ""; age = 0; }
string player::getName() { return name; }
int player::getAge() { return age;
}
void player::SetName(string playerName) {//hilarys code name = playerName; }
void player::SetAge(int playerAge) { age = playerAge; } void player::Print() { cout << "" << endl; }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
