Assignment X - Game Project
Due: Wed, Aug 4 (revised) -- (but absolutely the last possible
day!)
Objective
Programming in Java involves not only understanding the syntactic rules
and constructs of the language, but also the ability to research the
libraries that are needed for a task. The Java API is very large and has
many pre-built features. After this assignment, you will have some
experience looking into existing Java libraries and designing a small
program using object-oriented techniques.
Task
For this assignment, you will design and implement a game in Java. This
project may be done in groups of 2 people each, or it may be done solo (if
you don't want to work with another person). The final deliverables will
be due at the end of the term.
Details
- You may choose from a variety of board games or 1-player solo games
listed here, or you may request a
game that is not on the list, but it must be approved in advance.
- Send me an e-mail indicating whether you want to work solo or in a
group (and who your partner is, if a group), as well as which game you
want to do (you should indicate a second choice, in case your first is
already taken).
- If you want to request a game that is not already on the list of
approved games, include this in your e-mail, along with a description of
the game and/or link to online instructions for the game (if you can
find some). Essentially, I want to ensure that each group is doing a
game that is of an appropriate level. (Tic-tac-toe, for example, is too
simple, and there's already an applet example of this one on the Applet
notes page).
- The minimum requirement is to write a game, as an application and/or
an applet, that can be played by 1 or more human players on the computer.
It should have a usable interface, and it should implement the standard
set of rules for your chosen game. In the event that you have a game with
some rule variations, you should include information in your README
file (described below) that clarifies what version of the rules you are
implementing.
- General Guidelines for Grading: Since you have the freedom to
implement the design, grading for this project will be largely subjective.
However, here are some general guidelines I will be using:
- To qualify for an A: Rules of game implemented correctly, GUI
interface, playable game, well-designed interface that is intuitive for
the user, program fairly robust (erroneous inputs handled, for
instance), well-designed code.
- To qualify for a B: Rules of game implemented correctly, GUI
interface, playable game, reasonably good code design. (Here, for
instance, a GUI interface where all
the inputs are Dialog Box popups would earn less credit than something
more intuitive, like drag-and-drop on the game pieces). This would be a
playable game that had a less-intuitive interface, but was still usable.
- To qualify for a C: Rules of game implemented correctly,
reasonably good code design, robust handling of erroneous input,
playable game on a console interface (I'm leaving this as an option in case
somebody has extreme trouble with the GUI interface, but the point of
this assignment is to build the program with a GUI interface -- since most
people prefer to play games in that sort of environment!)
- Overall, for a better grade, implement a better program!
- Guidelines for researching resources
- You may use any of the Java libraries in the Java 1.4.2 API (unless
you happen to find a package like java.game.monopoly, for
instance).
- It would probably be a good idea to look at many other GUI examples
and look at the tutorials on the java.sun web site, to help you find
techniques and tips for implementing GUI interfaces
- If you find a resource that gives you some ideas -- and especially if
you model a portion of your code after another example -- be sure to
cite your source in your documentation
- The coding, however, must be yours. You are to implement
your own game logic (i.e. you may not just find an existing
implementation of the game and use code found on web searches).
- You may use icons, graphics pictures, sounds, etc that you find
online. If and when possible, cite your source, and be sure to pay
attention to any copyright notices regarding such resources.
- Extra Credit Opportunities -- I'm leaving this wide open.
There will be plenty of chances to earn extra credit on this assignment.
The minimum requirements is to implement a playable version of your chosen
game. Anything above and beyond can be done for extra credit. Be sure to
list anything extra you do in your README file, so I know to look for it.
Here are just a few possible things you could try, just to give you
some ideas (but certainly not limited to these):
- Make the game usable as both an application and an applet, with
appropriate features and setups for each
- Save/Open feature, for saving games in progress (only will work on
applications)
- For a game with rule variations, implement the ability to play using
one or more of the variations (or a menu to choose rule settings, if
appropriate).
- More creative and fun visual layouts, possibly incorporating graphics,
sounds, animations, etc.
Resources
Deliverables:
You should pack all relevant files for your
assignment into one jar file (named hwx.jar). The jar file
should contain:
- All necessary .class files and resource files that make your program
work
- All source code files (.java files) for your program
- A README file (this can be in text format or in html
format) that contains any extra documentation for your project. This
should include
- Any details regarding instructions for the game that are not obvious
from the set of standard known instructions
- A description of how to use the interface
- Whether you implemented the game as an applet, application, or
both
- Descriptions of any extra features implemented
- If working with a partner, include a description of the separation of
work (who was responsible for what pieces of the program).
- If your program is an applet, you should also submit an html file that
embeds the applet.
Your jar file should also be runnable. This means that if you
wrote it as an application, I should be able to play your game with the
command:
java -jar hwx.jar
And if you wrote it as an applet, your html page should be able to load
the game and run it from the jar archive.
E-mail this jar file to me (myers@cs.fsu.edu) by the due date. Your
e-mail subject should be GAME-SUBMIT. Include your name (both
names, if working with a partner) and section in the e-mail body. Please
only submit ONCE, unless you make a mistake and need to correct it
(before the due date) -- and minimize this. Only the last submission
will be graded.