思考アルゴリズム

 このプログラムでは、コンピュータの手を決めるためにまず盤面を評価して、 「点数」をつけています。例えば、自分の石が4つ並んでいてその隣が空いているのなら、 次はそこに打てば勝てるわけですから、最優先でそこに打ちたいですね。 ですから、その目の「点数」をうんと高くする事になるでしょう。
 また、連続する4つの中に自分の石が3つありその両隣が空いているなら、 次にその空いている所に打てば「必死」になるので、そこにもやはり高い点数を与えます。 ただし、その点数は次の手で勝てる4連よりは低くする必要がありますね。 そうしないと、すでに4つ並んでいる所があって次の手で勝てるのに、 わざわざ勝つまで2手かかる所に打つ、 などという間抜けなプログラムになってしまいます。

 コンピュータは、このようにしてそれぞれの目に対して点数をつけていき、 その点数が最も高い目に打ってきます。残念ながら、 一切「先」を読まないのであまり賢いとはいえませんが、見逃しがない(多分(^^;) 分けっこうしぶといです。 コンピュータ同志の対戦だとかなりの確率で引き分けまで粘りますね。

 プログラムの中では、盤面の情報が以下のように入っているので、 その動きを中心に得点の付け方や手の決定などをご覧ください。

・盤面情報の変数

石の配置情報 int koma[16][16]・・・・・その目にある石。0でなし、1で黒ー1で白

得点     int score[16][16]・・・・その目の得点


戻る