Due Monday, October 08, midnight
Delivery For this assignment, you will still place the design documents into the Design/ folder and Santorini-specific code into Common. The xrules goes into a 7/ directory, while the test go into 7/rules-tests.
Design Task The player itself is just a mechanism that hooks into the game framework and enables some other "actor" to engage. This actor could be a person, a remote component (as one pair already showed during a design review), and a strategy. For next week, design an interface between the player and a strategy object.
Ask yourself what a strategy object needs to know in order to plan the next action for a player.
You may also wish to contemplate what kind of strategies a player should pursue. This course is not about AI strategies, which is a subject that requires its own separate course(s). You may look into αβ minimax and other such idea on wikipedia. We will probably run a tournament for AI players after the grades have been settled (though we may off extra points).
your player will need a representation of where workers have been placed so far and a representation for how the player picks the location for the next worker.
when it is a player's turn, the referee must inform the player of the current state of the game; in turn, the player must inform the referee of the action to be taken.
Implement a rule checker that decides whether a player’s requested action conforms to the Santorini rules with respect to the current state of the game.
Knowledge A rule checker knows whose turn it is, the state of the game, and what is about to happen.
Services A rule checker must understand the current board and two kinds of requests: to move a worker from one square to a neighboring one and to build (up) a building on a square neighboring to a worker that just moved. By implication (context), it knows that the worker is owned by the player whose turn it is.
Mock-up Context To test such a small system of a number of components, it is common to implement a mock-up environment.
Testing Task Develop at least five system-level tests to be used with your test harness. A test consists of a pair of files: n-in.json and n-out.json where n is in 1, 2, 3, 4 or 5.