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:

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.
Solved Fifteen Puzzle

Specification

  1. Basic gameplay. Your program must:

    1. Display a random but solvable 15-puzzle.
      • The display does not have to look exactly like the picture above. Be creative.

    2. Allow the user to move tiles in an attempt to solve the puzzle.
    3. Display a congratulatory message when the user solves the puzzle.

  2. User interface. Your program must allow the user, via a well-designed user interface of your own choosing, to do the following:

    1. Display a new, random but solvable, game.
    2. 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.
    3. See the names of the authors of the program, as well as a brief bio for each.
    4. 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.
    5. Reset the puzzle to the same configuration that it started at when the user began her attempt to solve it.

  3. Platform. Your program must be able to run as either a Java Application or a Java Applet.
  4. Implementation requirements. Your program must:

    1. Use Swing components
    2. Have a clearly documented, object-oriented design that could be easily extended to incorporate additional features
    3. Have code that is clear, is easily extended, and obeys Sun's code conventions
      • In Eclipse, Source ~ Format enforces these code conventions
    4. Be reasonable in its use of space and time
    5. 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.
    6. Be implemented by using documented stubs and pair programming and an iterative enhancement plan.

  5. 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.

Your instructor created a repository whose name is:
	csse221-200910-Fifteen-xxx-yyy

You should place the following into that repository:

  1. A folder called Fifteen that is your Eclipse project.
  2. A PDF document called FifteenUML that is your UML class diagram.
  3. 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.