Readme for babylon-0.3
Babylon
-------
This is an implementation of a simple two-player game
in Haskell using the wxWidgets GUI toolkit.
This program allows you to play against the computer plays using
the classical minimax algorithm with alpha-beta prunning
(based on Bird and Wadler's presentation in the "Introduction
to Functional Programming").
The rules of the game are very simple:
* there are 12 stone tablets in 4 colors (3 of each color)
* initially the stones are randomly placed on the table,
forming twelve 1-stone piles
* on his/her turn, a player moves one pile ontop of another
provided that they have the same height or the same top
color (or both)
* the first player who cannot perform a move loses the game.
The game play very fast, typically under 5 mins; since there
are only 12 piles at the start, and each turn decrements one
pile, the game must finish in at most 11 moves.
Note that there is a winning strategy for the second player, but
it does not appear to be a simple heuristic for it (?).
The computer will play the winning strategy at the hardest level,
so it will always win as a second player at this level.
This was basically programmed in a single day as an experiment
using this wxWidgets (though I was experienced with Haskell).
I thought it would be a nice addition to show a simple but real
Haskell program.
If you have any comments please drop me a line,
Pedro Vasconcelos
pbv@dcc.fc.up.pt
Department of Computer Science
Faculty of Science, University of Porto, Portugal