CS 117 Final Project
Due noon, March 17, 1995
The Project
For your final project, you will write a game program.
Write your game so it is fun to play. You should design your
user interface with ease of use in mind, so users can concentrate on
strategy instead of being annoyed by the things required to enter
their moves. An aesthetically pleasing display of the game board
or hand, if appropriate, also adds to the fun of playing a game.
Think about computer games you have played, and what makes some of
them a pain to play, and others a delight.
Your choice of game will determine what will be required to make
the game fun. For example, if you select a two-person game like
Battleship, you will have to program the computer with a strategy,
since having two people play Battleship with one screen is a pain.
On the other hand, adventure games (you walk from room to room
discovering stuff) don't require a smart computer strategy.
Similarly, Tic-Tac-Toe is tedious at best, but it's really dumb
if the computer is an idiot about choosing its moves.
Be warned that even very simple games can be tricky to implement,
so don't try something like Backgammon or Hearts unless you're sure
you have plenty of time to devote to the project.
A little advice
Don't start late.
Have a careful plan of the small steps you will take in travelling
from no program to the final program. Design your program
modularly, so you can make the modules work one at a time.
Don't go to sleep without a program that compiles and runs without
crashing. It doesn't have do anything--just don't try to do so
much at once that you can't wrap up the day's work into a running,
partially complete, program.
Make copies of your program before making changes.
Don't assume that a text-only game is no fun. An interesting
game is interesting whether it's played on paper or in the dust
on the ground or on a high-powered graphics workstation.
Grading criteria
- You must meet the deadlines listed below.
- Your final program must compile and run. If it does
not compile, I won't grade it at all. If it compiles,
but crashes a lot, you will get a low grade. I would
much rather see a functioning program that does not
do everything than a program that tries to do everything
but does none of it successfully. Top-down design will
help you meet this criterion.
- An A program will have good documentation, easy to read
code, and a simple to use user interface. An A program needs
to show some ambition, as well as good execution. A C-
program will have documentation, and will allow a user to play
the game to completion. A B program will fall somewhere
between. Extra features will help your grade only if you
get the basics right in the first place.
The Schedule
The following are due by Friday, March 8. Send them
to me by e-mail at jondich.
- A brief description of what your program is intended to do.
- A description of the user interface. You need
to think carefully about how the user and your program will
communicate in a way that is convenient for the user. If
your program uses a menu structure, all the menus should
be presented here.
- A functioning skeleton of your program. This should
include declarations of global variables (with explanatory
comments), type definitions, a complete main program, and
fully commented stubs of all functions and procedures called
by the main program.
- A list of the order in which you will implement the features
of your program. This list should keep in mind
I will reply to the above within 24 hours of the time you email
it to me. The sooner you
get this to me, the better for all of us.
Due noon Friday, March 15 (via HSP)
- Your fully commented source code
- A description of the program (the description from the
March 7th part of the assignment would be fine)
- A description of the status of your program (what works,
what doesn't, and etc.)
Miscellaneous
Feel free to talk to each other and learn from each other, and compare
approaches to the problems posed by these programs. I ask, however,
that all your code be your own. If you take a significant idea from
another person, please give explicit credit to that person.
Talk to me. I can help. I will hold regular office hours
during reading and exam days. I will post my hours on my office door.
Start early, keep in touch, and have fun.
Jeff Ondich,
Department of Mathematics and Computer Science,
Carleton College, Northfield, MN
55057
(507) 663-4364,
jondich@carleton.edu