private static void CapturePawn(FieldState[,] boardState, int currentX, int currentY, int moveX, int moveY, GameState gameState, FieldState currentPawnType) { var opponentPawnX = currentX + moveX; var opponentPawnY = currentY + moveY; var opponentPawn = gameState.CurrentPawn == FieldState.RedPawn ? FieldState.YellowPawn : FieldState.RedPawn; var opponentDame = gameState.CurrentDame == FieldState.BluePawn ? FieldState.GreenPawn : FieldState.BluePawn; var newX = currentX + (moveX > 0 ? moveX + 1 : moveX - 1); var newY = currentY + (moveY > 0 ? moveY + 1 : moveY - 1); if ((boardState[currentX, currentY] != currentPawnType) || (opponentPawnX < 0 || opponentPawnX > 7 || opponentPawnY < 0 || opponentPawnY > 7) || (newX < 0 || newX > 7 || newY < 0 || newY > 7) || !((boardState[opponentPawnX, opponentPawnY] == opponentPawn) || (boardState[opponentPawnX, opponentPawnY] == opponentDame)) || (boardState[newX, newY] != FieldState.Empty)) return; var tmpBoard = (FieldState[,])boardState.Clone(); tmpBoard[newX, newY] = tmpBoard[currentX, currentY]; tmpBoard[currentX, currentY] = FieldState.Empty; tmpBoard[opponentPawnX, opponentPawnY] = FieldState.Empty; gameState.PossibleCapture.Add(tmpBoard); }