Project: Phase 1
This page describes both an overview of the entire project and
a detailed description of the first phase.
I. The chess program
Your project in the course is to produce a program for
playing chess and chess variants
with the following features:
- Users can design variants on chess, specifying
new kinds of pieces and how they move,
the board layout,
the initial positions of pieces, how the game is won,
and special rules.
- Users can play either as two humans at one computer,
two humans at different computers through a network connection,
or one human versus the computer.
- The AI for the "computer" player will be defined by
plug-ins that users can write.
(You will not be required to write any algorithms for
automated chess playing apart from dummy plug-ins for testing.)
The range of possible "chess variants" is not well-defined.
A large part of this project, especially at the beginning,
is to find a reasonable range of chess variants for
your program to handle.
To do that you will be working with real, live potential
users of your system:
The Wheaton College Chess Club.
The project will be divided into three phases.
- Phase 1: Determine a reasonable range of
variants for your system to model.
Design a scheme for modelling and storing descriptions
of these game variants.
Make a bare-bones application as a driver for your model,
showing the board configuration for a given game variant.
You will work in 3 groups, sizes 3, 2, and 2.
Each group will work on the same problem, and the
best result will be used in subsequent phases.
Assigned Feb 2, due March 4.
- Phase 2: Make a program for two human players at one computer
to play a game of any variant.
The user interface should be reasonbly
good---there may be some expectation that there will be some changes to
it in the next phase, but it should be readily extensible for those
improvements.
You will work in 2 groups, sizes 3 and 4, with teammates
different from phase 1 as much as possible.
Each group will work on the same problem, and the
best result will be used in the final phase.
Assigned March 14, due Apr 1.
- Phase 3: Add the remaining features:
A user-friendly way to edit and define new game variants,
distributed play, and the AI plug-in feature.
You will work as a single group, though you will
likely divide up into about 3 subteams, each working on
a different aspect of the problem, all together producing
one result.
Resources.
There has been prior work on the problem of classifying and
specifying chess-like games.
You may look at various on-line resources (Wikipedia
would be a reasonable place to start), and the following
books:
- David Pritchard, Encyclopedia of Chess Variants, 2001
- D Pritchard and J Beasley, The Classified Encycolpedia of
Chess Variants, 2007
- David Pritchard, Popular Chess Variants, 2003
II. Phase 1 details
By interviewing members of
the Wheaton College Chess Club, determine a reasonable range of
chess variants for your system to model.
Design a scheme for modelling and storing these variants---both
conceptually and using a set of Java classes.
You will also need to be able to store this information in
files.
Users will need a way to create games using your scheme, but this
doesn't have to be easy at this point---it could be that they
simply need to edit the files directly.
Make a bare-bones user interface that acts as a driver for your
model: the user should be able to select a game and have
the initial set-up for that game shown, with some way to indicate how
the pieces can move.
This doesn't have to be very user-friendly at this point, only
something that will prove the concept of the model.
In addition to actual software, in this phase
you will also produce documentation describing
- A record of your interviewing of members of the chess club
and how you determined the range of variations for your
system to model.
- A formal description of how you model the information
about the variant gmes.
- How the files are formatted and how to edit them.
I've made March 4 (the Friday before spring break)
the official due date, but I strongly urge you to
aim for the previous friday (Feb 25) as the working due date.
The only reason I didn't make that the official one is that
I figured you wouldn't use the week before spring break
on phase 2 even if you had the option, so you may
as well have that week as a buffer time.
If, however, everyone does finish by Feb 25, I can
reassign new teams and get the phase 2 specification
earlier, so you can begin planning for that phase earlier.