Description
Goals
write, compile, and test a program that uses multiple files; upload it to flip for testing; submit
it to TEACH
create and use simple makefiles and simple archiving of all files in a zip file
compile a program written in multiple source code files
This is the first module in what will be a larger program. They are first graded S/U. When
the larger program is completed it will receive a numeric score to be used in your final
grade calculation. To receive a grade of S this module bust be completed to at least 90%
of expectations. Talk to your grader. You will receive feedback and a chance to resubmit
if necessary.
You will create a program that uses a Critter class to move around a Grid, which is also a class.
The Critter and the Grid classes will be in separate files.
The Critter class will have a data member to count the number of moves made. It will also need
data members to hold the current x and y coordinates. It will have a member function that
randomly moves it one space in one of 4 directions. You will create both the source and header
files for the class.
The Grid class has a 2D array data member. This will be an array of type character. It will have an
updateLocation() function that will be used by the Critter class to pass the new location of the
Critter to be displayed.
For the array ou will use a space character, ‘ ‘ for empty and a single ‘C’ for the location of the
Critter. The Grid will have one Critter that moves around. The starting location will be random.
The Critter will move around until it would exit the gird. In that case it is squashed. The program
should terminate normally and tell the user how many steps the Critter took. After every move the
grid will be displayed to the user.
Hint: For testing, use small arrays. There’s only one Critter after all. J
You will create a program that prompts the user for the number of rows and columns. It must be at
least 1 x 1. It will create the Grid and Critter, run the simulation, display the grid after each move,
and inform the user when the Critter gets squashed showing the number of moves made.
NOTE: You must always do reasonable input validation. If you have a question about what is
“reasonable” ask your grader, any TA, or the instructor. You don’t have the tools yet to check
everything easily. We don’t want you spending more time on that than anything else. In this case
you’re checking for integer input to verify each is greater than 0.
Once your program is working and you have eliminated the bugs create a makefile to build your
program. You do not need a complicated makefile. You can have a single target that just includes
what you typed into the command line for testing.
Include a second target clean that removes extraneous files such as .o files or a.out.
Finally, you should include all 6 files into a zip archive. You must submit only the zip file in
TEACH by the due date. We will only accept submissions in TEACH that are in a zip file and that
include the makefile.
HINT: If you look at the assignment you’ll see that much of this module is similar to what is
required in the assignment. Develop the module while doing the design for the assignment. You
can avoid making the same mistake(s) twice.
On The Horizon
Remember we are laying the foundation for future parts of your program! Yes, this is cumbersome
for what it does. What’s coming? More than one Critter moving around. More than one type of
Critter. What would that mean for technical skills? Inheritance. Pointers to objects. We do a lot
with pointers so you might begin reviewing your notes and the test. J
Grading
Modules will be graded S/U. This module is the first part of the cumulative modular
program (Cump) which will be graded. These criteria are given specifically for this
module.
Programming style- 10%
Create the source and header file for the Critter class- 20%
Create the source and header file for the Grid class- 20%
Create and execute a program using both classes, and verify the results- 20%
Create a makefile with targets for your program and clean – 20%
Submit all files in zip archive- 10%