670 S '05
Project 1
Project 2
Project 3
Project 4
Project 5
Project 6
Project 7
Project 8
Project 9
Project 10
Project 11
Project 12
Project 13

Project 3

Due date: 1/28 @ noon

Objective: to work with someone else's code base and to develop a story for a central data structure

Your first programming project is to modify a program that comes with comments and test suites. The program implements the "silly" 21 game that we discussed in lecture 3.

The given program allows players to roll the die, to skip a turn, or to declare that they are done. It implements both an automated machine player and a plain graphical interface to a human player.

Task 1: With the given program, a game may last forever. Design and implement a strategy that guarantees that a game ends. Don't forget to modify the documentation and the test suites. [POINTS: 5]

Task 2: Modify the given program so that a player can optionally roll the die a second time per turn. Don't forget to modify the documentation and the test suites. [POINTS: 2]

The second half of the assignment is to prepare the term project. The goal of the project is to implement and maintain Carcassonne, a board game. As you ponder the project, keep in mind that eventually we will run the game via a server into which independent programmers can plug in automated players.

Task 3: Identify the central data structure from your use cases and write up an interface for this data structure. The interface must include interfaces for all arguments and results of functions, and definitions for those interfaces. [POINTS: 6]

Task 4: Finally, develop a simplistic algorithmic strategy for playing the game automatically. Write it up in English. [POINTS: 2]

Product: Mail a tar bundle with two subdirectories labeled 21 and Carcassonne, respectively. Place the relevant pieces into the subdirectories and add a README file.

last updated on Tue Jun 9 22:03:19 EDT 2009generated with PLT Scheme