dポイントプレゼントキャンペーン実施中!

今オセロゲームをCで作っているのですが、AIを作るところで行き詰ってしまいました。
とりあえずminiMax法で作ろうとしており参考にしているサイトのURLは
http://hp.vector.co.jp/authors/VA015468/platina/ …
です。

このサイトの
for(最初の子節点の手; 未評価の子節点がある; 次の子節点に移る)
という部分を見る限り先に子節点がいくつあるのか調べておく必要があると思うのですが、
調べる上で次の子節点を調べるときにその前に調べた子節点以外から探す方法が
よくわからないのですが、どのような実装を行えばいいでしょうか。
おおまかな説明、流れをご教授お願いします。

A 回答 (2件)

オセロなんだよね? だったら, とりあえず「全部のマス目を調べる」のが手っ取り早いんじゃないかな. もちろん「ルール上おいてはいけないマス目」もあるけど, それはルールで排除すればいいだけ.



実際問題としてゲームで探索するときに「子節点がいくつあるのか」を調べるのは無駄だと思う. そもそも「子節点がいくつあるのか」を数えようとしたら, 結局「まだ見ていない子節点があるかないか」を判断しなきゃならないんだし.
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2014/02/10 21:12

探し方はともかくとして。



Cのfor文では、; ; の真ん中の評価は、ループ毎に実行されます。
また、「i<10」といった不等式である必要もありません。

continueの挙動を除けば
for(最初の子節点の手; 未評価の子節点がある; 次の子節点に移る)

最初の子節点の手;
while(未評価の子節点がある) {
...
次の子節点に移る
}
と同じです。

最初に数を数える必要はありません。

この回答への補足

回答ありがとうございます。
while(未評価の子節点がある) {
...
次の子節点に移る
}
と同じ挙動であったとして、「未評価の子節点がある」があるかどうかを判定するためには
子節点がいくつあるか知っておかなければ判定はできないのではないかと思ったのですが違うのでしょうか?

補足日時:2014/02/10 16:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!