|
C M S C 2 1 4 C o m p u t e r S c i e n c e I I S p r i n g 2 0 0 4 |
Project 2 is worth 8% of your grade.
In the previous project, you coded the "set-up" for the game ,EENVG, "Extremely Exciting Non_ Violent Game" (pronounced N-VIG). This project puts the Robot and the Stalker on the board. The Stalker only removes points or ends the game.
The Robot has all of its moves stored in Moves which you have already implemented. Now you need to get the Robot and Board to interact with each other. Once the Robot is working correctly, you need to get the Stalker to move about the board.
The rules of the game are as follows:
This project implements the STL vector class as well as a circular doubly linked list. The goals of this project are to:
Please note that *all* programming projects in this course (including this one) are to be done independently or with the assistance of the instructional staff of this course only.
Please review the policies outlined on the class syllabus concerning the use of class computer accounts and concerning the University's Code of Academic Integrity. The instructors of this course will review the programs submitted by students for potential violations of the Code of Academic Integrity and if it is believed that a violation has occurred it will be referred to the Office of Judicial Programs and the Student Honor Council.
Hardcoding is considered a violation of academic integrity
Students are expected to write "clear and legible" code. Please review the following Style Guide which specifies how students in CMSC 214 are expected to lay out their code:
http://www.cs.umd.edu/class/spring2003/cmsc214/Projects/styleguide.txt
Answers to "frequently asked questions" will be posted via the main projects page. Prior to asking a question or submitting a project you should check the FAQ to see if any important information has been covered there. In addition to answers to FAQ's any important information pertaining to a project will be posted on it's FAQ.
DON'T email questions. We cannot keep up with the numerous emails about a project. GO SEE A TA or an instructor during office hours. We will generally NOT respond to email questions about the project.
For this project you will be required, among other things, to write the code for 2 new classes and modify several classes already written:
After copying the header files into your account you should create the corresponding Pair.cpp, Node.cpp, Moves.cpp, Mpair.cpp, Board.cpp, Except.cpp, Robot.cpp and Stalker.cpp files. You will write the code that implements the member functions for these classes. Note: you may NOT change the public methods in the header files but may add private methods as needed. You may NOT add private, public or protected data members to any class other than Except.h.
You must add public methods to Except.h only
In each header file you will find the class with it's data member(s)
and member function(s). There is a comment before/around each member
function describing what it should do. You are to implement (i.e.
write the code for) the member function ABOVE the line
// YOU MAY PUT ANY PRIVATE METHODS HERE
so that it does what the
comment states that it should do and nothing more.
Next you should write 7 unit test files to test each of your classes:
A unit test file should be a main() for a particular class that calls and tests each public method. It also tests the private methods which are called from public methods. Note that when developing/writing code you should do so in parts/modules and test each as you create it (keeping backup copies!). So for example, when writing Node, you also write a testNode.cpp that is the main() for Node.cpp. It should call all public functions and include appropriate output to test that all Node.cpp code works correctly.
And finally you should test your project with the main provided:
Add your own catch clauses to this file. We will run your main but it must diff down to and including the 2 catch clauses that were written for you for exceptions we provided.
It is expected that your output will match our primary.output exactly
You may assume that
Your first step should be going back over project 1 and correcting code that failed our tests or was inefficient or incomplete.
This project has complicated logic because of the interactions among the various classes. Start immediately. A simple logic error can waste a great deal of time. If you run into something that stumps you, put it aside and work on something else, then come back to the code giving you problems.
You may find it easier to remove the templatizing and get the code to work correctly first, then templatize the appropriate classes.
If you work on your class account, tar up your files every day and email them to your wam account. You can always work on the project on the g++ compiler on wam if the detective cluster goes down or is slow.
You may assume:
A primary input file and a primary output file are provided in the class posting accounts (in the appropriate directory). You should review these files. They will be named primary.input and primary.output respectively.
Your project will successfully submit if it passes the primary.input.
Your program should generate the corresponding output similar to
primary.output. Additionally, we will test several methods from your
code.
When your main program is compiled and run with input redirected so that it gets the contents of the primary input file (primary.input) as input, it should generate output that matches the primary output file. When we test your program we will diff your output (using diff -bwi) with that of the primary output and if it does not match, your program will be considered to not meet the minimum running standards and you will be unable to submit it.
Passing primary does not guarantee a passing grade (70 or above) for your project. Testing your program thoroughly helps.
Provide a makefile that creates an executable file named p2 when the command make p2 is run.
Tar up all necessary files, such as source code, including:
submit p2.tar 2
Submit will start accepting project 2 submissions on or about 03/06/04.
|
See the class syllabus for policies concerning email Last Modified: February 19, 2004 |
|
|
|
|
|