X-Git-Url: https://git.sesse.net/?p=remoteglot;a=blobdiff_plain;f=Board.pm;h=39c8134096b5897a0e7bd0ff47baad0441fe310f;hp=a867c74162cefde898c6f25d3fd37442c02bc2c5;hb=41591b89435e7b052b4f953dc78d074662803677;hpb=735425d12830b76de9fd60247267380424902d3b diff --git a/Board.pm b/Board.pm index a867c74..39c8134 100644 --- a/Board.pm +++ b/Board.pm @@ -170,7 +170,7 @@ sub parse_pretty_move { # Parse promo my $promo; - if ($move =~ s/=([QRNB])$//) { + if ($move =~ s/=?([QRNB])$//) { $promo = $1; } @@ -200,8 +200,11 @@ sub parse_pretty_move { push @squares, [ $row, $col ]; } } + if (scalar @squares == 0) { + die "Impossible move $move"; + } if (scalar @squares != 1) { - die "Ambigious or impossible move $move"; + die "Ambigious move $move"; } return (@{$squares[0]}, $to_row, $to_col, $promo); } @@ -425,6 +428,19 @@ sub prettyprint_move { return ($pretty, $nb); } +sub num_pieces { + my ($board) = @_; + + my $num = 0; + for my $row (0..7) { + for my $col (0..7) { + my $piece = $board->[$row][$col]; + ++$num if ($piece ne '-'); + } + } + return $num; +} + sub _prettyprint_move_no_check_or_mate { my ($board, $from_row, $from_col, $to_row, $to_col, $promo) = @_; my $piece = $board->[$from_row][$from_col];