@hackage hstzaar0.5

A two player abstract strategy game.

HsTZAAR

HsTZAAR is a computer program to play TZAAR, a 2-player abstract strategy game designed by Kris Burm and the last game in the GIPF project. HsTZAAR is written in Haskell and allows for local play against a computer AI; it also provides a good interface for programmers to implement diferent AI strategies.

This program was based on the htzaar implementation by Tom Hawkins. In 2010, I started experimenting with classical AI techniques for TZAAR and implemented them on-top of htzaar; since the later package is longer updated, I decided to start HsTZAAR.

The main improvements so far are:

* a better GUI using gtk2hs for widgets and cairo for high-quality 
  2D board rendering.
* a better AI using minimax and alpha-beta prunning; it now plays at
  a challenging level (at least for a beginner like myself). 

Requirements

HsTZAAR requires a resonably recent GHC compiler (version 6.10.x or newer) plus the gtk2hs, cairo and glade libraries. It is developed in Ubuntu GNU/Linux system, and should compile and run fine on other Linuxes. I also verified that it compiles under Mac OS X (snow leopard) and should probabily do under Windows as well (but this was not tested).

Compilation

Using the Haskell Cabal tool (fetches the package and any dependencies, builds and installs):

  $ cabal install hstzaar

Alternatively, you can do the build manually from the source tarball:

$ tar xvzf hstzaar-x.y.tar.gz $ cd hstzaar-x.y $ runhaskell Setup.hs configure $ runhaskell Setup.hs build $ runhaskell Setup.hs install

AI strategies

HsTZAAR implements a few AI strategies. lame: selects a random valid move greedy: selects the local best move by the static evaluation function plyN: simple minimaxing to N-ply dynN: greedy strategy for early game, then minimaxing N-ply for later game All of the above will select a winning move or a move to prevent the adversary from winning (if such moves are avaliable).

Note that higher ply values can increase memory consumption dramatically and do not necessarily play better! The default greedy strategy plays well enough to challenge a beginner such as myself and run under 150Mb resident space.

Usage

Executing the binary starts the GUI interface for playing against an AI; some extra options are controlled by command line arguments:

hstzaar [OPTION..] [AI AI] where OPTIONS are -s SEED --seed=SEED random number seed -n N --matches=N number of matches (for AI tournaments) -T --tests run QuickCheck tests

Examples:

  1. Run a tournament between the greedy and ply2 strategies: 10 matches (5 random boards, each strategy plays first white then black, fixing the random seed for repeatebility):

    $ hstzaar -s0 -n10 greedy ply2

  2. Run QuickCheck correctness tests (see source code for details on these):

    $ hstzaar --tests

Pedro Vasconcelos, 2010 pbv@dcc.fc.up.pt