Notation

This page documents the notation system used by the Free Internet Morabaraba Server. This system was originated by Adam Oellermann, and permission is granted for anyone to use it freely.

Move Format

FIMS uses a standard method of describing moves. Each of the "squares" on the board (ie places where cows may be placed) are labelled according to a grid, with columns numbered from a-g, and rows numbered from 1-7, as follows:

Morabaraba Board

    

The squares are referred to by column and row. So, for example, a cow on the top-left square would be on a7. It would be able to move to d7, b6 and a4. his standard notation is also used among players of Nine Men's Morris
(Muehle), and clearly is derived from the very common algebraic notation used in Chess.

The following types of moves are supported:

  • Drops: when placing your 12 cows, you simply specify the square to place it onto (eg a1)
  • Drops with Captures: when placing your 12 cows, you may make a capture -  specify the square to place your cow onto, as well as the square of the cow being captured, separated by 'x' to indicate a capture (eg a1xf2)
  • Moves: specify the square of the cow you're moving, and the square that you're moving it to, separated by '-' (eg d1-d2)
  • Moves with Captures: use the same format as Moves, but add the square of the cow you're capturing, separated by 'x' (eg d1-d2xa1)

Position Format

The standard position format encodes all information about a Morabaraba
position into an easily-parsed string. The string consists of seven tokens,
separated by spaces:

    <inhand> <whitesquares> <blacksquares> <sidetomove>
         <lastwhitemove> <lastblackmove> <halfmoveclock>
        
<inhand>:

The number of cows each player has remaining to drop - used during the first phase of the game, after which the values will always be zero.    Numbers for white and black are separated by commas - for example, it    would be 12,12 for a new game and 11,12 after White made the first move. 

<whitesquares>:

This is simply a comma-separated list of the squares occupied by White.

    
<blacksquares>:

This is simply a comma-separated list of the squares occupied by Black.

    
<sidetomove>:

Indicates the side to move, W if White to move and B if Black to move.

    
<lastwhitemove>:

The last move, given in the standard move format discussed above, made by White. This is stored as it is needed to check for machine-gunning in    captures.

<lastblackmove>:

The last move, given in the standard move format discussed above, made by Black. This is stored as it is needed to check for machine-gunning in captures.

    
<halfmoveclock>:

The number of moves made since the last non-reversible move (ie drop or  capture). This is used for draw detection; if it exceeds 50, the game is  drawn.

Based on this, the position for a new game is:

    12,12 - - W - - 0

A more complicated example from a decidedly one-sided game:

    0,0 a7,a1,d1,b6,b2,c5,c3,e3,d3,c4,f2 d7,d6,d5 W f2-g1xd7 g7-d5xg1 0