Beispiel #1
0
        internal void PlaceStone(StoneColor stoneColor, Position position)
        {
            var       newNode = new GameTreeNode(Move.PlaceStone(stoneColor, position));
            GameBoard fullBoardPosition;

            if (_currentGameTreeNode == null)
            {
                _currentGameTreeNode = newNode;
                fullBoardPosition    = new GameBoard(new GameBoardSize(9));
            }
            else
            {
                _currentGameTreeNode.Branches.Insert(0, newNode);
                fullBoardPosition    = _currentGameTreeNode.BoardState;
                _currentGameTreeNode = newNode;
            }
            GameBoard newBoardPosition = new GameBoard(fullBoardPosition);

            newBoardPosition[position.X, position.Y] = stoneColor;
            _currentGameTreeNode.BoardState          = newBoardPosition;
            GameTreeNodeChanged?.Invoke(this, _currentGameTreeNode);
        }
Beispiel #2
0
        // Game Board Manipulation

        internal void ClearBoard()
        {
            _currentGameTreeNode            = new GameTreeNode(Move.Pass(StoneColor.Black));
            _currentGameTreeNode.BoardState = new GameBoard(new GameBoardSize(9));
            GameTreeNodeChanged?.Invoke(this, _currentGameTreeNode);
        }