6515 S '11
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 11

Due date: 3/31 : 11PM

Objective: (1) to implement changes to the rules of the game and the mechanism of conducting the game via software (2) to design a communication protocol for a distributed version of Ingenious

Playing Ingenious: The original Ingenious is played according to slightly different rules than we have implemented so far. Also, people tend to interpret the rules with slightly different actions than our software version. It is time to catch up a bit.

Task 1: An Ingenious player may re-rack at the end of his turn if his rack (hand) of tiles does not contain any of his lowest-scoring colors. Re-racking assumes that the administrator has six tiles left, and the player still has six tiles. The player pulls six new tiles from the administrator's bag of tiles and then deposits his own six tiles into the bag.

Modify your code base to accommodate the re-racking rule. While reracking is optional and you don't have to modify your player software, your game framework must allow all third-party players to rerack when desired.

Task 2: When people play Ingenious, all players know about each other and see which tiles have been placed where instantaneously.

Design and implement a protocol that informs all players of the names of the other participants before the administrator runs a complete game.

Also design and implement a protocol that informs all players of the tile placements a player executed during his turn. That is, after a player completes a turn, the administrator informs all other players of the tile placements of this turn. This provides the players with enough information to compute every participant's score.

Task 3: When people play Ingenious and they have to kick out a cheating player, they undo the tile placements of his bad turn.

Modify your administrator so that it cancels tile placements if a player performs any illegal action during his turn.

Playing Ingenious on a distributed network: Your company wishes to sell a framework for running software competitions. Participants will write player modules that may query human players and/or use an AI to play turns. They will write components that run on their own local computers and communicate with your administrator remotely.

Task 4: Design and specify a communication protocol for implementing a distributed version of Ingenious. The specification should come with detailed interaction diagrams that cover all communication scenarios and typed textual specifications of XML messages that must flow back and forth per scenario.

Base your remote-interaction protocol on Ingenious as modified in tasks 1 through 3.

Deliverables: Your SVN directory must contain a subdirectory labeled "11" with the following pieces:

 Source/               ... source files for revised implementation ...
 xbuild                ... builds an executable ...
 xrun                  ... runs a complete game ...
 Protocol/protocol.txt ... a rigorous specification of XML diagrams 
 Protocol/*.*          ... hand-drawn interaction diagrams ...
The xrun script sets up a game for four AI players and then runs the game to completion. It reports to STDOUT the final ranking of the players.

last updated on Tue Apr 12 15:14:46 EDT 2011generated with Racket