[©2009 Felleisen, Proulx, et. al.]
The goal of this assignment is to give you the opportunity to revise your game and add extra features. While it is possible to add engaging user interactions, the core is the design of the functionality, following the design recipes, building abstractions, and using the existing libraries. Good design and a simple user interaction part is much more valuable than flashy user interactions with poor design of the program that drives it.
You should finish the design and implementation of the most of your project by Sunday night, December 6th. You will then have three days to work on the user interactions and on improving the program design, with the final version due on Wednesday, December 9th at 6:00 pm.
The project presentation will be done in the lab in 212 WVH on Monday, December 7th and on Wednesday, December 9th during the regular lecture times.
Your task is to complete the design and implementation of your game from Assignment 10. (Most of you have done the Frogger.)
One part of the credit for this assignment will be given for a design document that describes the data, the organization of the program, the key program components, and the design of tests. Imagine you want someone to keep improving your program — provide a road map that explains what your program does and how does it do it. This document should complement the Javadoc generated web pages. A separate document will give you a more detailed guidelines for what we expect.
One part of the credit for this assignment is for the model part.
You will also get credit is for the user interactions (view) — grading both the design of the user views and the design of the program that drives it. A small bonus may be earned for exceptionally well designed display or interactions. It is better if the user interaction is simple, but is well designed and documented, than if a fancy GUI display is driven by a code that another programmer cannot understand and maintain.
You will present your project (both partners together) during the times given above. Each partner should be able to describe any part of the code in the project, regardless of who wrote it, as we expect that both partners work on the project together. More information about the presentations will be provided shortly.
The design part of each project typically takes the greatest amount of time. the more time you spend thinking things through, the easier it is to actually write the code.
Make sure you think the whole framework through before you start programming. Spend some time researching the Java libraries to see what tasks can be done using the existing tools. Write sample adapters to see how the existing class can be used in your setting.
Then design the key component by specifying their interfaces — the method headers, the interfaces that various classes must implement or use to get information from others.
For now, you have not learned about various tools and techniques to support such design process — other than class diagrams. Any description that you find helpful in clarifying the roles of the different classes and interfaces in your program is acceptable.
The design document you produce should include a brief user’s guide, give a general overview of the project organization as well as describe all data definitions and the key methods. The Javadocs supplement this with detailed information about the actual implementation.