// end DebugDisplay #region Methods /// <summary> /// Display info on the game at the right of the chessboard /// </summary> /// <param name="indRank"> /// the rank in the chessboard /// </param> /// <param name="strbBoard"> /// output buffer /// </param> /// <remarks> /// Display the captured pieces and the MoveHistory /// </remarks> private static void DebugGameInfo(int indRank, ref StringBuilder strbBoard) { strbBoard.Append(":"); strbBoard.Append(indRank); strbBoard.Append(" "); switch (indRank) { case 0: case 7: Pieces piecesCaptureList = (indRank == 7) ? Game.PlayerWhite.CapturedEnemyPieces : Game.PlayerBlack.CapturedEnemyPieces; if (piecesCaptureList.Count > 1) { strbBoard.Append("x "); foreach (Piece pieceCaptured in piecesCaptureList) { strbBoard.Append( (pieceCaptured.Name == Piece.PieceNames.Pawn) ? string.Empty : pieceCaptured.Abbreviation + pieceCaptured.Square.Name + " "); } } break; case 5: int turnNumberOld = Game.TurnNo; // Backup TurNo Game.TurnNo -= Game.PlayerToPlay.Brain.Search.SearchDepth; for (int indMov = Math.Max(1, Game.MoveHistory.Count - Game.PlayerToPlay.Brain.Search.MaxSearchDepth); indMov < Game.MoveHistory.Count; indMov++) { Move moveThis = Game.MoveHistory[indMov]; if (moveThis.Piece.Player.Colour == Player.PlayerColourNames.White) { strbBoard.Append(indMov >> 1); strbBoard.Append(". "); } // moveThis.PgnSanFormat(false); // Contextual to Game.TurNo strbBoard.Append(moveThis.Description + " "); Game.TurnNo++; } Game.TurnNo = turnNumberOld; // Restore TurNo break; } strbBoard.Append("\n"); }
/// <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; }