public ChessKnight(Color color, ChessBoard board, bool isFirst) : base(color) { if (color == Color.WHITE) { CurrentField = isFirst ? board.OccupyField(1, 'B', Color.WHITE) : board.OccupyField(1, 'G', Color.WHITE); } else { CurrentField = isFirst ? board.OccupyField(8, 'B', Color.BLACK) : board.OccupyField(8, 'G', Color.BLACK); } }
public virtual void Move(ChessField field, ChessPlayer enemy, ChessBoard board, int moveNumber, ChessFigure[] otherFigures) { FieldStatus enemyStatus = Color == Color.WHITE ? FieldStatus.OCCUPIED_WITH_BLACK : FieldStatus.OCCUPIED_WITH_WHITE; ChessFigure killedFigure = null; if (field.Status == enemyStatus) { foreach (ChessFigure enemyFigure in enemy.Figures) { if (enemyFigure.CurrentField == field) { enemyFigure.FigureKilled(); killedFigure = enemyFigure; break; } if (enemyFigure is ChessPawn && ((ChessPawn)enemyFigure).EnPassant && enemyFigure.CurrentField.Column == field.Column) { if ((Color == Color.WHITE && field.Row == 6 && ((ChessPawn)enemyFigure).EnPassantMove == moveNumber - 1) || (Color == Color.BLACK && field.Row == 3 && ((ChessPawn)enemyFigure).EnPassantMove == moveNumber)) { enemyFigure.FigureKilled(); killedFigure = enemyFigure; break; } } } } ChessMove move = new ChessMove(Color, moveNumber, this, killedFigure, CurrentField, field); PreviousMoves.Add(move); board.EmptyField(CurrentField); board.OccupyField(field.Row, field.Column, Color); CurrentField = field; FindFieldsToMove(board); }
public ChessKing(Color color, ChessBoard board) : base(color) { CurrentField = color == Color.WHITE ? board.OccupyField(1, 'E', Color.WHITE) : board.OccupyField(8, 'E', Color.BLACK); }
public ChessPawn(Color color, ChessBoard board, char position) : base(color) { CurrentField = color == Color.WHITE ? board.OccupyField(2, position, Color.WHITE) : board.OccupyField(7, position, Color.BLACK); }