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

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

スポンサーサイト

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

繰り返し&再帰による裏返し

 今回は裏返す方法について紹介します。

 まずは繰り返しによる裏返し。!基本は繰り返しによるチェックとほとんど同じ!!move_subという一方向にだけ裏返す関数を作り、それをmoveという関数から8方向について呼び出すだけです。処理内容としては、チェックの時の処理に加えて、自分の石に書き換えるという処理、指定した場所に自分の石を置くという2つを付け加えるだけです☆また、move関数は裏返したい方向にチェックをし、裏返せると判断したら裏返すという処理を行います。

 次に再帰による裏返しを紹介します。これも再帰によるチェックとほとんど同じ!!これも、!!move_subという一方向にだけ裏返す関数を作り、それをmoveという関数から8方向について呼び出すだけです。move関数は繰り返しの時と全く同じで、check_subは裏返せるということを前提として処理をするので相手の色の間再帰し、自分の色に書き換えるだけです。


 今回はすごく簡潔に書きましたが、チェックを理解していれば容易にできますので、わからなかったらチェックの方を理解しましょう。



参考ソースファイル
<繰り返し>
2次元配列の場合
board7.h [DL]
board7.c [DL]

1次元配列の場合
board8.h [DL]
board8.c [DL]

<再帰>
2次元配列の場合
board9.h [DL]
board9.c [DL]

1次元配列の場合
board10.h [DL]
board10.c [DL]



次回予告:チェックと裏返し処理を一度にする



↓読んだらクリックお願いします↓



スポンサーサイト

コメントの投稿

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

トラックバック

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