Fifteen
CSSE 221 – Fundamentals of Software Development Honors
Fall 2008–2009
Work on this exercise
with a partner, using pair programming.
Both partners should participate fully in ALL aspects of the project.
Goals
The goals of this exercise are to apply and hence reinforce your understanding of:
- The use of UML class diagrams
to brainstorm/develop and then communicate designs
- Developing a Graphical User Interface (GUI)
by using Swing components
- Implementing interfaces , including interfaces
for event-driven programming
- Implementing by using documented stubs
and an iterative enhancement plan
- Pair programming
Overview
You will design and implement a computer version of the 19th century puzzle called the
Fifteen Puzzle.
- See the
Wikipedia article on the Fifteen Puzzle
for a description of the puzzle.
- You will implement by using:
- pair programming
- documented stubs
- an iterative enhancement plan
- Deliverables, as described below, include a UML class diagram, a project plan,
an iterative enhancement plan, html javadoc-generated documentation, and your code.
There is no report associated with this project.
|
|
Specification
- Basic gameplay.
Your program must:
- Display a random but solvable 15-puzzle.
- The display does not have to look exactly like the picture above.
Be creative.
- Allow the user to move tiles in an attempt to solve the puzzle.
- Display a congratulatory message when the user solves the puzzle.
User interface. Your program must allow the user,
via a well-designed user interface of your own choosing, to do the following:
- Display a new, random but solvable, game.
- Change the puzzle from the current dimensions (initially 4 by 4)
to an m by n puzzle,
for any reasonable m and n.
- Changing dimensions should cause a new, random but solvable, puzzle to be displayed.
- See the names of the authors of the program, as well as a brief bio for each.
- Undo the previous move, or redo the previous undo.
- Multiple undo's/redo's, all the way back to the beginning of the player's
attempted solution to the puzzle, should be allowed.
- Reset the puzzle to the same configuration that it started at
when the user began her attempt to solve it.
Platform. Your program must be able to run as either a Java Application
or a Java Applet.
Implementation requirements. Your program must:
- Use Swing components
- Have a clearly documented, object-oriented design that could be easily extended to incorporate
additional features
- Have code that is clear, is easily extended, and obeys Sun's code conventions
- In Eclipse, Source ~ Format enforces these code conventions
- Be reasonable in its use of space and time
- Feature a good GUI design -- use common sense and perhaps look at
Ben Shneiderman's Eight Golden Rules of Interface Design
and/or Gerd Waloszek's
Golden Rules for BAD User Interfaces
- As an aside: the presentation of Schneiderman's Eight Golden Rules,
per the above link,
is part of the way-cool
Case of the Killer Robot
case study on Software Engineering ethics.
- Be implemented by using documented stubs and pair programming
and an iterative enhancement plan.
Additional functionality. You may implement additional features
if you wish, but you receive full credit simply for the above.
Deliverables and Turning in your work
Recall that you work in pairs on this project.
Let xxx denote one partner's username and yyy
denote her partner's username,
where xxx is alphabetically before yyy.
- For example, clintow
is alphabetically before reaganrw.
Your instructor created a repository whose name is:
csse221-200910-Fifteen-xxx-yyy
You should place the following into that repository:
- A folder called Fifteen that is your Eclipse project.
- You create your own Eclipse project,
being sure to call it Fifteen.
- As usual, your Eclipse project should include approprate src,
bin, and doc subfolders.
- A PDF document called FifteenUML that is your UML class diagram.
- A PDF document called FifteenProjectPlan that is your project plan,
including your iterative enhancement plan.
All of the above should be committed frequently,
so that we can observe the progress of your project as you work on it.
You may have additional documents in your repository if you wish,
for example a UMLet or Violet class diagram and a Microsoft Word project plan,
but we will examine only the PDF documents and your Eclipse project.