public void RemakePlay(Position origin, Position destination, Piece capturedPiece) { Piece p = Board.RemovePiece(destination); p.DecreaseMovement(); if (capturedPiece != null) { Board.PutPiece(capturedPiece, destination); _capturedPiece.Remove(capturedPiece); } Board.PutPiece(p, origin); //#smallRoque if (p is King && destination.Column == origin.Column + 2) { Position originR = new Position(origin.Line, origin.Column + 3); Position destinationR = new Position(origin.Line, origin.Column + 1); Piece R = Board.RemovePiece(destinationR); R.DecreaseMovement(); Board.PutPiece(R, originR); } //#bigRoque if (p is King && destination.Column == origin.Column - 2) { Position originR = new Position(origin.Line, origin.Column - 4); Position destinationR = new Position(origin.Line, origin.Column - 1); Piece R = Board.RemovePiece(destinationR); R.DecreaseMovement(); Board.PutPiece(R, originR); } //#EnPassant if (p is Pawn) { if (destination.Column != origin.Column && capturedPiece == VulnerableEnPassant) { Piece pawn = Board.RemovePiece(destination); Position posP; if (p.Color == Colors.White) { posP = new Position(3, destination.Column); } else { posP = new Position(4, destination.Column); } Board.PutPiece(pawn, posP); } } }