From 6264793ac51342a676296c4a17a10e542a1d248f Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 13 Nov 2013 21:52:51 +0100 Subject: [PATCH] Handle double pawn moves in can_reach. --- remoteglot.pl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/remoteglot.pl b/remoteglot.pl index c632387..cf9d119 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -853,11 +853,17 @@ sub can_reach { return (can_reach($board, 'R', $from_row, $from_col, $to_row, $to_col) || can_reach($board, 'B', $from_row, $from_col, $to_row, $to_col)); } + + # TODO: en passant if ($piece eq 'p') { # black pawn if ($to_col == $from_col && $to_row == $from_row + 1) { return ($dest_piece eq '-'); } + if ($to_col == $from_col && $from_row == 1 && $to_row == 3) { + my $middle_piece = substr($board->[2], $to_col, 1); + return ($dest_piece eq '-' && $middle_piece eq '-'); + } if (abs($to_col - $from_col) == 1 && $to_row == $from_row + 1) { return ($dest_piece ne '-'); } @@ -868,6 +874,10 @@ sub can_reach { if ($to_col == $from_col && $to_row == $from_row - 1) { return ($dest_piece eq '-'); } + if ($to_col == $from_col && $from_row == 6 && $to_row == 4) { + my $middle_piece = substr($board->[5], $to_col, 1); + return ($dest_piece eq '-' && $middle_piece eq '-'); + } if (abs($to_col - $from_col) == 1 && $to_row == $from_row - 1) { return ($dest_piece ne '-'); } -- 2.39.2