Example #1
0
 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);
     }
 }
Example #2
0
        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);
        }
Example #3
0
 public ChessKing(Color color, ChessBoard board) : base(color)
 {
     CurrentField = color == Color.WHITE ?
                    board.OccupyField(1, 'E', Color.WHITE) :
                    board.OccupyField(8, 'E', Color.BLACK);
 }
Example #4
0
 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);
 }