/// <summary> /// Returns a list of player's pieces attacking this square. /// </summary> /// <param name="player"> /// Player who owns the attacking pieces that you want to find. /// </param> /// <returns> /// List of pieces. /// </returns> public Pieces PlayersPiecesAttackingThisSquare(Player player) { Pieces pieces = new Pieces(); foreach (Piece p in player.Pieces) { if (p.CanAttackSquare(this)) { pieces.Add(p); } } return(pieces); }
/// <summary> /// Returns a list of player's pieces attacking this square. /// </summary> /// <param name="player"> /// Player who owns the attacking pieces that you want to find. /// </param> /// <returns> /// List of pieces. /// </returns> public Pieces PlayersPiecesAttackingThisSquare(Player player) { Piece piece; Pieces pieces = new Pieces(); // Pawn piece = Board.GetPiece(this.Ordinal - player.PawnAttackLeftOffset); if (piece != null && piece.Name == Piece.PieceNames.Pawn && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - player.PawnAttackRightOffset); if (piece != null && piece.Name == Piece.PieceNames.Pawn && piece.Player.Colour == player.Colour) { pieces.Add(piece); } // Knight piece = Board.GetPiece(this.Ordinal + 33); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 18); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 14); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 31); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 33); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 18); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 14); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 31); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } // Bishop & Queen if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, 15)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, 17)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, -15)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, -17)) != null) { pieces.Add(piece); } // Rook & Queen if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, 1)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, -1)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, 16)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, -16)) != null) { pieces.Add(piece); } // King! piece = Board.GetPiece(this.Ordinal + 16); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 17); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 1); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 15); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 16); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 17); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 1); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 15); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } return(pieces); }
/// <summary> /// Returns a list of player's pieces attacking this square. /// </summary> /// <param name="player"> /// Player who owns the attacking pieces that you want to find. /// </param> /// <returns> /// List of pieces. /// </returns> public Pieces PlayersPiecesAttackingThisSquare(Player player) { Piece piece; Pieces pieces = new Pieces(); // Pawn piece = Board.GetPiece(this.Ordinal - player.PawnAttackLeftOffset); if (piece != null && piece.Name == Piece.PieceNames.Pawn && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - player.PawnAttackRightOffset); if (piece != null && piece.Name == Piece.PieceNames.Pawn && piece.Player.Colour == player.Colour) { pieces.Add(piece); } // Knight piece = Board.GetPiece(this.Ordinal + 33); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 18); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 14); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 31); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 33); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 18); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 14); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 31); if (piece != null && piece.Name == Piece.PieceNames.Knight && piece.Player.Colour == player.Colour) { pieces.Add(piece); } // Bishop & Queen if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, 15)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, 17)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, -15)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Bishop, this, -17)) != null) { pieces.Add(piece); } // Rook & Queen if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, 1)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, -1)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, 16)) != null) { pieces.Add(piece); } if ((piece = Board.LinesFirstPiece(player.Colour, Piece.PieceNames.Rook, this, -16)) != null) { pieces.Add(piece); } // King! piece = Board.GetPiece(this.Ordinal + 16); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 17); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 1); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 15); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 16); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 17); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal - 1); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } piece = Board.GetPiece(this.Ordinal + 15); if (piece != null && piece.Name == Piece.PieceNames.King && piece.Player.Colour == player.Colour) { pieces.Add(piece); } return pieces; }
/// <summary> /// Returns a list of player's pieces attacking this square. /// </summary> /// <param name="player"> /// Player who owns the attacking pieces that you want to find. /// </param> /// <returns> /// List of pieces. /// </returns> public Pieces PlayersPiecesAttackingThisSquare(Player player) { Pieces pieces = new Pieces(); foreach (Piece p in player.Pieces) { if (p.CanAttackSquare(this)) pieces.Add(p); } return pieces; }