cs3802 - Software Engineering
yIN-yANG-pINK-dANK - Homework 3 - 11/10/99

Joe Hughes
Shad Hashmi
Mike Nestrud
Nick Black
John Yeager

Project Overview: Our Design project is for a game called "Math Invasion", which is an educational game for kids ages 8 to 10. The theme of the game is that aliens have invaded our planet, and are dropping bombs on a city. In order to save the city, the player has to solve math equations, one per bomb dropped, to make the bombs not hit the city. The game will get more difficult as the player's score increases, and there will be provisions for saving high scores at the end of game play. The game is designed to help young children improve their basic math skills, and is intended to include full multimedia capability, with sound and video. Completed Design Decisions: 1. We decided to follow the Model-View-Controller paradigm for this project. This allows for abstraction of the math problems and details of the game away from the user's view of the game, which eases programming and increases maintainability and reusability. This leaves our design language-independent, which was a goal of our design. 2. We decided that all objects on the screen during game play will be stored in a Linked List data structure by the Controller. We thought of using other data structures, but a linked list seemed simplest to implement, and allows the programmer sufficient flexibility should the application need more objects in the main view at a later time. 3. We decided that all graphical objects will draw themselves, instead of having the View draw them each individually. We could have the View draw the objects, but we decided this would not be as reusable as letting the objects draw themselves. By letting the object draw themselves, the programmer can change the way objects look on the screen without changing the View, which leads to more reliable and robust code. Pending Design Decisions: 1. We left open a decision between a static list of math equations for game play, versus a randomly generated set of problems for the player. A randomized list seems simple enough to program, but the design specification states that fractions must be evenly divisible. This is simple to overcome, but the advantages of the static list include the ability ro re-play a whole level and get the same math problems again, which could be beneficial. 2. We left open a decision between event-driven game flow, versus a structured or non-event-driven paradigm. We did not know whether the authors of the specification intended to use a timer to drive events, or if they wanted a static loop running the graphics updates. This seems like a small decision, but it potentially affects the way the objects will need to interact. 3. We debated whether the game should create a linked list of equations before each level starts, or whether we should have an object array for each level. The object array would allow for a static number of bombs to drop for each level, whereas a linked list could provide more flexibility for the different levels. We need to talk with the authors of the specification to see what they intended the game to do, as far as expandability as the levels get more difficult.