From: Steinar H. Gunderson Date: Sat, 16 Jun 2007 12:31:18 +0000 (+0200) Subject: Be stricter about the en passent handling in FEN notation; unconfuses Rybka. X-Git-Url: https://git.sesse.net/?p=remoteglot;a=commitdiff_plain;h=7b293fd83e51f0253230381796e24224f314506b Be stricter about the en passent handling in FEN notation; unconfuses Rybka. --- diff --git a/remoteglot.pl b/remoteglot.pl index 330d47b..7bcbbdf 100644 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -190,11 +190,28 @@ sub style12_to_fen { # en passant my $ep = "-"; if ($x[10] != -1) { - $ep = (qw(a b c d e f g h))[$x[10]]; + my $col = $x[10]; + my $nep = (qw(a b c d e f g h))[$col]; + + if ($x[9] eq 'B') { + $nep .= "3"; + } else { + $nep .= "6"; + } + + # + # Showing the en passant square when actually no capture can be made + # seems to confuse at least Rybka. Thus, check if there's actually + # a pawn of the opposite side that can do the en passant move, and if + # not, just lie -- it doesn't matter anyway. I'm unsure what's the + # "right" thing as per the standard, though. + # if ($x[9] eq 'B') { - $ep .= "3"; + $ep = $nep if ($col > 0 && substr($board[4], $col-1, 1) eq 'p'); + $ep = $nep if ($col < 7 && substr($board[4], $col+1, 1) eq 'p'); } else { - $ep .= "6"; + $ep = $nep if ($col > 0 && substr($board[3], $col-1, 1) eq 'P'); + $ep = $nep if ($col < 7 && substr($board[3], $col+1, 1) eq 'P'); } } $fen .= " ";