羊の人工知能研究 ~将棋AI開発の日々~

将棋、リバーシのAIプログラミングを中心にその開発過程及び記録を頑張って更新していきます。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

打ち歩詰め&Undo機能


今度こそ
ルール完成


 前回の更新で完成していなかった『打ち歩詰め』が完成しました。打ち歩詰めチェックの手順としては、手持ちの歩で相手に王手をかけた場合その歩を王以外の駒で取ることができれば打ち歩詰めではないので置くことができます。王以外の駒で取ることができない場合、王が逃げる場所があれば>打ち歩詰めではない逃げ場所がなければ最終的に打ち歩詰めとうい判定になります。

 実際に打ち歩詰めを行ったときの実行画面を以下の図20に示します。



図20:打ち歩詰めの実行画面


 実際にあらゆるパターンで打ち歩詰めのチェックをしたわけではありませんが、一応完成ということで(汗


 あと今回の更新で新たに追加したUndo機能については、毎回駒を移動したり打ったりした情報をSASHITE構造体にまとめスタックにプッシュしていき、undo関数が呼び出されたときにスタックの情報をポップし元に戻す方法をとっています。←図21参照



図21:Undo機能


 今まで実行画面を見せてきましたがこの実行画面についてのコマンド入力方法の説明が抜けていました(人・∀・)


というわけで突然
コマンド入力方法の説明


・「○手 > 」 とプロンプトが表示されている場合はカンマ形式で『77,76』という風に入力します。この意味としては、座標7七の駒を座標7六に移動するという入力になっています。

・手持ちの駒を打つ場合は『0,76』という風な感じに入力します。大体分かるかと思いますが、手持ちの場合は最初の値を0にし、次の値にどこに打つかを入力します。また、最初の値を0にした場合、「1:角 2:飛 3:香 4:歩 5:桂 6:銀 7:金 > 」という感じのプロンプトが表示され、どの駒を置くかを聞かれます。該当する番号を入力するだけです。

・Undoについては入力を「0,0」とするとUndoされます。



次回予告:置換表を実装



↓現在2つのランキングに参加しています↓

クリックしたら投票されるみたいなので、明るい一票をお願いします(m。_。)m
スポンサーサイト

コメントの投稿

URL
コメント
パスワード
秘密
管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://hitsujiai.blog48.fc2.com/tb.php/13-6b5b956d
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。