#!/usr/bin/perl
use strict;
use warnings;
use Chess::Rep;
use Data::Dumper;local$Data::Dumper::Indent=1;local$Data::Dumper::Terse=1;local$Data::Dumper::Sortkeys=1;
my $i = Chess::Rep::ID_TO_PIECE;
my $p = Chess::Rep::PIECE_TO_ID;
$p = { reverse %$p };
#die Dumper(ref($i), [grep{defined}@$i],ref($p),$p);
my $g = Chess::Rep->new;
#$g->set_from_fen('rnbqkbnr/pppppppp/8/8/3P4/8/PPPP1PPP/RNBQKBNR b KQkq d3 0 1'); # first move
$g->set_from_fen('rnbqkbnr/pp1ppppp/8/2p5/3P4/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2'); # second
#$g->set_from_fen('r1b1k1nr/pp1ppppp/8/2pP4/3b4/8/PPP1PqPP/RNBQKBNR w KQkq - 0 1'); # white king checked
print $g->dump_pos, "\n";
print "Valid moves:\n";
for my $m (@{$g->status->{moves}}) {
    my @at = $g->get_piece_at($m->{to});
    warn sprintf "%s: %s => %s %s\n", $p->{$m->{piece}},
        Chess::Rep::get_field_id($m->{from}), Chess::Rep::get_field_id($m->{to}),
        ($at[0] ? $p->{$at[0]} : '');
#    warn sprintf "%s => %s\n", $m->{from}, $m->{to};
}
