Team Project - Description
CS 420 - Spring 2006 - Ms. Katz

Goals
- to work as a disciplined team to develop a substantial project
- to apply software engineering techniques
- to build a project using an object perspective including multiple interacting objects and meaningful inheritance
- to use iterative enhancement to grow the software from an initial simple version to a creative playable version
- to become familiar with an integrated development environment (IDE) through using Eclipse
- to increase your familiarity with Java

Overview
The developed software will support the playing of Sudoku puzzles. The Wikipedia entry ( http://en.wikipedia.org/wiki/Sudoku) provides background, hints, and references.

There are many variations of how this software might work. Features the final version should have include

  • reading and printing puzzles
  • saving of puzzles in progress
  • generating puzzles
  • supporting marking of possibilities
  • solving puzzles
You may include many more features such as different sizes of puzzles, using letters instead of digits, different levels of help in solving, hints, an undo capability, sound effects, and error warnings.

Project development constraints include that it must be written in Java by your team, use objects extensively, use the SWT libraries, be developed in the Eclipse environment but run as a standalone application, and execute on Windows, Mac OS X, and Linux (as in our lab). While having reliable, usable, maintainable, efficient, and correct code is important, the development process is the focus of this project. Documenting how you developed this as a team is a crucial aspect of the project.

Textual Puzzle Description
To facilitate testing and sharing of puzzle especially in the early stages of the project, we will use a textual puzzle description where each cell in the puzzle is given by a character in a text file. Empty cells are represented by a period. The puzzle above has the text representation shown at right. We are using the file ending 'sdk-txt' for these files. Your first iteration should be able to both read and write such files in addition to its other capabilities.

I'll provide several example puzzles in this format.

9..6..478
.2.7.1639
.8..4.1..
2.5.63...
.........
...97.5.3
..6.2..1.
7521.4.8.
198..6..7

Marking
One tool that seems to be very helpful in completing these puzzles is a way to mark which values might possibly be used in a currently empty cell. Your program should provide an easy way for the player to graphically note these possible values.

The final version of your program should provide a dot capability as described on the Wikipedia page. There are nine possible dot locations in a cell which correspond to the values 1 to 9. The user may turn these dots on or off individually and easily. The dots may be colored or black.

For example, the lower right block of the puzzle above might be marked as shown at right. The middle right cell has only one dot indicating that the number 6 should be placed there. The upper left cell, however, might contain a 3 or a 9 and further analysis is needed.