At the moment this has a single instance
static LowBoard * LowBoard::the();
The LowBoard is driven by the methods
LowBoard::move(Point &pt); LowBoard::takeBack(Point &pt);
Legal move for the current state
LowBoard::legalMove(const Point &pt) const;
Q: Will LowBoard::move() do illegal moves ?
A: Yes.
The board state is accessible via the method
GoString * LowBoard::stringAt(Point &pt);
The LowBoard.h file is,
class LowBoard
{
public:
LowBoard(Coord width);
virtual ~LowBoard();
// Main selector methods
unsigned short turn() const;
Side toMove() const;
const GoString * stringAt(const Point &p) const;
// Check for occupied point, off board, suicide (if applicable), Ko.
BOOL legalMove(const Point &p) const;
// Is the point an illegal Ko move?
BOOL isIllegalKo(const Point &pt) const;
// Required by the GoGui
int width() const;
Side stoneColorAt(Coord x,Coord y) const;
BoardController * boardController() const;
// For Testing:
BOOL isValid() const;
void rebuild();
// Public modifier methods.
// Pass moves: pass in "Point::passPoint()"
void move(const Point &pt);
// Unmove == unpass. takeBack the last move.
void takeBack();
// [snip private data]
};