In this first phase of the project, you will make a testable prototype of the RoboRally game. By the end of the phase, you should have a scaled-down version of the game with two players can play on a single computer which will serve as a proof-of-concept design.
The following game elements will be present in the initial version.
Initially, the two players will be presented with the board with their robots in starting positions and the two flags in set positions.
On each turn, the first player will pick five program cards for the five registers. He will have all eight or so card types for each register---we won't worry about hands and shuffling yet. The the second player does the same. Counters (the numbers that indicate sequencing for program cards) for each card will be chosen randomly. Then each register is executed in sequence; the location of the robots after each register phase is shown.
Turns continue until a robot has touched the two flags in the correct sequence.
Considering the scope of the semester project, this phase is not very ambitious. It's here to give you a feel for what you'll be doing, and to practice certain things.
SVN. You will be managing your project using the Subversion revision control system.
JUnit. Unit testing using JUnit is required for this project and will be part of the grade. Write unit tests as you go along, as much as possible following the practice of writing a test for a feature before you implement the feature.
JavaDoc. Write Javadoc-style comments in your code and maintain JavaDoc documentation.
Packages. Organize your project using Java packaged.
UML. You will not be required to submit UML diagrams with your project, but it is highly recommended that you discuss your ideas with your partner using UML diagrams.
User interface. If you haven't used Swing/AWT before or if you're rusty on it, now is the time to brush up. Don't worry about the aesthetics of the user interface this time around. Concentrate on making something that is easy to test, and explore what's available in Java's GUI packages.
Anticipate change. Above all, make every effort to have your code be extensible. From the board game, you have a basic idea of what's coming in the next two phases. Make this first cut flexible enough that you can add the next features easily. Also, don't be surprised if a good deal of your code in this phase doesn't make it into the final product. The title of Chapter 11 of The Mythical Man-Month (the book we'll be reading at the end of the semester) is, "Plan to Throw One Away."
The first thing is to find a partner. Then tell me that you are partners, so I can start a SVN repository for you.
Friday, Feb 13. This is one week earlier than the estimated date on the syllabus. The reason for this change is that I've pared down the requirements; also, this will give you an extra week to spend on the later phases.
Recall the the syllabus states that if the project is running late, you should talk to me to negotiate a revised due date and point reduction.
You will not need to turn anything in. I will check out your code from the repository for grading once the due date has exspired.