2010年7月25日日曜日

無事帰還っす

帰ってきてくれると信じてたっす。
むしろ帰ってくるのは分かってた、という感じっす。
分かっていたとしても帰ってきてくれると嬉しいもんっすね。
どうもぺんぎんっす( ◎v◎ )


リバーシのAIの話っすよ。
何か別なことを想像したりしてないっすか?

再帰呼び出しで探索をしてたんっすけど、returnされてこなかったっす。
予想通り無限ループが発生してたっす。
簡単に説明すると、盤面を走査してるときに同じ場所ばっかり調べてたっす。

iとjでそれぞれタテとヨコを調べてるっす。
ループで回してるっすから、これでナナメも走査できるっす。
for(i = -1; i <= 1; i++)
{
  for(j = -1; j <= 1; j++)
  {
    その方向にひっくり返る石があるか判定(石の位置, i, j);
  }
}
とまぁ、ざっくりこんな感じのことをやってたっす。
判定関数の作り方がマズくて、i=0,j=0のときに無限ループっす。
対処として、i=0,j=0を除いてループを全部書き下したっす。
8方向についてだけっすからラクに書き換えられたっす。
ループじゃない分、ちょっとだけ速くもなるっすからね。

さらに今日はもうちょっと進んだっす。
初期盤面からの探索で、正しい着手可能点を返してきたっす。
盤面評価がいい加減でも、とりあえず探索できたっす。
あとのチェック項目は
 ・パスの処理
 ・終局の処理
 ・評価関数の強さ
 ・全体の実行速度
とりあえず大きいのはこんなところっす。


今日はかなり進んだ気がするっす。

0 件のコメント:

コメントを投稿

Free Avatar