tewalds / morat

A program to play Gomoku, Havannah, Hex, Rex, Y and Pentago.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Morat

Build Status

Morat is a game playing framework, along with implementations of several games. It includes some general purpose libraries (alarm, time, thread, random), and some game specific libraries (compacting tree, gtp, time controls).

It specializes in 2-player, perfect information, zero sum, deterministic games, especially placement games (where RAVE works).

So far it supports 6 games:

Potential games:

Potential variants:

  • Gomoku on a hex board
  • non-regular or non-symmetric boards
  • Misere any game (ie make rex a variant of hex instead of its own game)
  • 1,2,2 (first turn place 1 piece, then each player alternates placing 2 pieces)
  • Various swap rules

So far it supports 3 algorithms:

Potential algorithms:

The goal is to make the algorithms game independent, and make it easier to implement new games with strong players. There is quite a bit of work left to make this a reality, so the current work is just to make the game code more similar and then move the code into common libraries.

The primary interface is GTP (Go Text Protocol), which can be used from:

Requirements

  • Linux (probably works on any unix)
  • C++ tool chain (g++ or clang)

Usage

  • Check out the code from github
  • Run make to compile the code
  • Run:
    • ./morat-gomoku for Gomoku
    • ./morat-havannah for Havannah
    • ./morat-hex for Hex
    • ./morat-rex for Reverse Hex
    • ./morat-y for Y
    • ./morat-pentago for pentago

Run make test to run the test suite. Current test coverage is pretty bad.

If you make any changes to the code and want to update the dependencies, just make clean, or rm .Makefile.

License

This projected is licensed under the terms of the MIT license.

About

A program to play Gomoku, Havannah, Hex, Rex, Y and Pentago.

License:MIT License


Languages

Language:C++ 98.9%Language:Ruby 0.8%Language:Makefile 0.3%Language:Shell 0.0%