COMP 105
Introduction to Computer Science
Kalamazoo College Computer Science Program Fall 2008

Programming Project #1: Joust!

Due Wednesday of Fifth Week


Introduction

The goal of this project is to reproduce the classic arcade video game Joust . In the original game, the player steers a knight riding a flying ostrich. The goal of the game is to turn enemy knights into eggs by flying into them from above. The eggs can then be collected for points.

Our implementation of this game will be a bit simpler than the original. We won't worry about keeping score. Instead of a single player against several computer controlled opponents, our version will pit two human players against each other. The two flying adversaries (choose any flying character you like) will start out on opposite sides of the "screen" and the game will end when one of the players manages to land on top of the other.

One challenging aspect of this project is that we will be recreating a 2d video game in a 3d world. You'll need to exercise special care to keep all of the objects in your world confined to a single plane. This will be easier if you use pull-down methods to position objects instead of using the mouse. For example, you could use "move to" and "orient to" commands to make sure that all objects are initially at the same spot and facing in the same direction. If you then position the objects using "move forward/backward" commands and "move up/down" commands you can guarantee that all objects will perfectly aligned on the same plane. You can use similar techniques to ensure that the camera is squarely facing the plane of the game.

To give you an idea of the sort of layout I have in mind, feel free to download this example: simple_joust.a2w . (You are welcome to use my world to write your program, but it will probably be more interesting if you put together your own.)

This is not a trivial project! Start early! Remember that late days cannot be applied to programming projects. If you put off getting started until the last minute, you could easily find yourself stuck without access to assistance from the instructor or a TA.


Details


Design

As tempting as it is to jump right in and start coding, you'll need to work out a design on paper beforehand. In developing your design you should consider which methods should be world level and which should be class-level. You should figure out where it's appropriate to use functions. You should sketch out which methods will be associated with which events. Your design should be organized and legible. For more guidelines on preparing a design, check out the design mini-lab.

It is likely that once you start coding, you will deviate somewhat from your original design. That's fine; there is no need to update your design to correspond to the final result.

Handing In

By the start of class on Wednesday of fifth week your project should be e-mailed to pcutter@kzoo.edu. Your design document should be handed in at the beginning of that class period.


Grading

The project grade will be broken down as follows: