Example #1
0
        // constructors
        public Board(Player a, Player b)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Turns               = 0;
            fiftyMoveRule       = 0;
            threeholdRepetition = false;
            history             = new Stack <Move>();
            deletedPieces       = new Stack <Piece>();
            whitePlayer         = a.color == Color.White ? a : b;
            blackPlayer         = a.color != Color.White ? a : b;
            BoardTab            = new Piece[8, 8];

            BoardTab[0, 0] = new Rook(Color.White); BoardTab[7, 0] = new Rook(Color.White);
            BoardTab[0, 7] = new Rook(Color.Black); BoardTab[7, 7] = new Rook(Color.Black);

            BoardTab[2, 0] = new Bishop(Color.White); BoardTab[5, 0] = new Bishop(Color.White);
            BoardTab[2, 7] = new Bishop(Color.Black); BoardTab[5, 7] = new Bishop(Color.Black);

            BoardTab[1, 0] = new Knight(Color.White); BoardTab[6, 0] = new Knight(Color.White);
            BoardTab[1, 7] = new Knight(Color.Black); BoardTab[6, 7] = new Knight(Color.Black);

            BoardTab[3, 0] = new Queen(Color.White); BoardTab[3, 7] = new Queen(Color.Black);

            BoardTab[4, 0] = new King(Color.White); BoardTab[4, 7] = new King(Color.Black);

            for (int i = 0; i < 8; i++)
            {
                BoardTab[i, 1] = new Pawn(Color.White);
                BoardTab[i, 6] = new Pawn(Color.Black);
            }
        }
        /// <summary>
        /// Add a piece to the board
        /// </summary>
        /// <param name="pieceIndex">The square to add the piece to</param>
        /// <param name="pieceName">The name of the piece type</param>
        /// <param name="owner">What colour it should be, null for promotion</param>
        public void SpecialAdd(int pieceIndex, string pieceName, string owner)
        {
            Piece piece       = new Pawn(0, 0, Color.White);
            var   x           = (pieceIndex % 8) + 1;
            var   y           = (pieceIndex / 8) + 1;
            var   ownerColour = Color.Black;

            if (owner.Equals("NULL"))
            {
                ownerColour = (y == 1 ? Board.WhiteColour : Board.BlackColour);
            }
            else if (owner.Equals("WHITE"))
            {
                ownerColour = Board.BlackColour;
            }
            else if (owner.Equals("BLACK"))
            {
                ownerColour = Board.WhiteColour;
            }
            switch (pieceName)
            {
            case "Pawn":
                piece = new Pawn(x, y, ownerColour);
                break;

            case "Rook":
                piece = new Rook(x, y, ownerColour);
                break;

            case "Bishop":
                piece = new Bishop(x, y, ownerColour);
                break;

            case "Knight":
                piece = new Knight(x, y, ownerColour);
                break;

            case "Queen":
                piece = new Queen(x, y, ownerColour);
                break;

            // Shouldn't be needed
            case "King":
                piece = new King(x, y, ownerColour);
                break;
            }
            // Remove any old piece
            Board.Pieces.Remove(Board.GetPiece(x, y));
            // Add the new piece
            Board.Pieces.Add(piece);

            foreach (var pieces in Board.Pieces)
            {
                pieces.GetMoves(Board, true);
            }
        }
Example #3
0
 public override IEnumerable <Loc> TilesCovered(Board currentBoard, byte row, byte col)
 => Rook._TilesCovered(currentBoard, row, col).Union(Bishop._TilesCovered(currentBoard, row, col));