#	perlのChess::Repモジュールを使って移動の妥当性のチェック・移動の表記の取得を行うプログラム。
#	移動前の状態のFENと、指し手を入力するとさまざまな情報が得られる。
#	使用法
#		movehelper.pl <移動前のFENのスペースを"_"に置換したしたもの> <今回の指し手>
#	戻り値
#		<項目名>:<値>(改行)
#		という形式で結果が返る。
#		標準エラー出力に"Illegal move"が返ることがある。

use Chess::Rep;
$board = Chess::Rep->new;

$oldfen = $ARGV[0];
$oldfen =~ s/_/ /g;	#"_"を" "に変換。
$board->set_from_fen($oldfen);
$moveresult = $board->go_move($ARGV[1]);
$newfen = $board->get_fen();

print "Move:Valid\n";
print "BeforeFEN:" . $oldfen . "\n";
print "MoveFrom:" . $moveresult->{from} . "\n";
print "MoveTo:" . $moveresult->{to} . "\n";

print "Promotion:";
if(defined($moveresult->{promote}))
{
	print $moveresult->{promote};
}
print "\n";

print "MoveSAN:" . $moveresult->{san} . "\n";
print "AfterFEN:" . $newfen . "\n";
