# Returns a new board.
sub make_move {
my ($board, $from_row, $from_col, $to_row, $to_col, $promo) = @_;
- my $move = _move_to_uci_notation($from_row, $from_col, $to_row, $to_col, $promo);
+ my $move = move_to_uci_notation($from_row, $from_col, $to_row, $to_col, $promo);
my $piece = $board->[$from_row][$from_col];
my $nb = $board->clone();
return (_row_letter_to_num($2), _col_letter_to_num($1));
}
-sub _move_to_uci_notation {
+sub move_to_uci_notation {
my ($from_row, $from_col, $to_row, $to_col, $promo) = @_;
$promo //= "";
return _pos_to_square($from_row, $from_col) . _pos_to_square($to_row, $to_col) . $promo;
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];
- my $move = _move_to_uci_notation($from_row, $from_col, $to_row, $to_col, $promo);
+ my $move = move_to_uci_notation($from_row, $from_col, $to_row, $to_col, $promo);
if ($piece eq '-') {
die "Invalid move $move";
$pos->{'player_w'} =~ s/^W?[FCIG]M//;
$pos->{'player_b'} =~ s/^W?[FCIG]M//;
$pos->{'move_num'} = $x[26];
+ if ($x[27] =~ /([a-h][1-8])-([a-h][1-8])/) {
+ $pos->{'last_move_uci'} = $1 . $2;
+ } else {
+ $pos->{'last_move_uci'} = undef;
+ }
$pos->{'last_move'} = $x[29];
bless $pos, $class;
$np->{'player_b'} = $pos->{'player_b'};
my ($move, $nb) = $pos->{'board'}->prettyprint_move($from_row, $from_col, $to_row, $to_col, $promo);
$np->{'last_move'} = $move;
+ $np->{'last_move_uci'} = Board::move_to_uci_notation($from_row, $from_col, $to_row, $to_col, $promo);
+
return bless $np;
}