Table of Content

Starting a New Game

To start a new game, create a GameInfo object, specify the handicap, the board size, the starting player and the komi in it. Then create a Game object using the GameInfo parameter constructor.


GameInfo gi = new GameInfo() { Handicap = 2, StartingPlayer = Content.White };
Game game = new Game(gi);

Making a Move

To make a move, call the MakeMove method on a game object. The method will return a new game object representing the state of the game after the move. The current implementation accepts all moves, including suicide, overwrite and super-ko-violating moves. As shown, there are overloads of the MakeMove method which set an out bool parameter with true or false depending on the legality of the move.
bool legal;
Game postMove = game.MakeMove(3, 3, out legal);


To start a variation sub-game, call MakeMove on any Game node in the tree. All variations are recorded in the game tree, and may be exported to SGF.

Setting Up a Position

To set up a board position without going through all the moves, you can use setup moves instead. Setup moves are not checked for legality (they can overwrite, create groups with no liberties, etc.). They are used for example to set up a life-and-death go problem, or to show common patterns that appear in game. To use setup moves you call the SetupMove method on a game object.

Example 1: Setting up a free-placed handicap:

GameInfo gi = new GameInfo() { StartingPlayer = Content.White };
Game g = new Game(gi);
g.SetupMove(3, 3, Content.Black); // Place a black stone on the lower left star point.
g.SetupMove(9, 9, Content.Black); // Place a black stone in the center of the board.
g.SetupMove(3, 15, Content.Black); // Place a black stone in the upper left star point.

When exporting to SGF, the setup moves will appear correctly:


Last edited Nov 5, 2009 at 8:41 AM by paviad, version 8


No comments yet.