思考アルゴリズム
このプログラムでは、コンピュータの手を決めるためにまず盤面を評価して、
「点数」をつけています。例えば、自分の石が4つ並んでいてその隣が空いているのなら、
次はそこに打てば勝てるわけですから、最優先でそこに打ちたいですね。
ですから、その目の「点数」をうんと高くする事になるでしょう。
また、連続する4つの中に自分の石が3つありその両隣が空いているなら、
次にその空いている所に打てば「必死」になるので、そこにもやはり高い点数を与えます。
ただし、その点数は次の手で勝てる4連よりは低くする必要がありますね。
そうしないと、すでに4つ並んでいる所があって次の手で勝てるのに、
わざわざ勝つまで2手かかる所に打つ、
などという間抜けなプログラムになってしまいます。
コンピュータは、このようにしてそれぞれの目に対して点数をつけていき、
その点数が最も高い目に打ってきます。残念ながら、
一切「先」を読まないのであまり賢いとはいえませんが、見逃しがない(多分(^^;)
分けっこうしぶといです。
コンピュータ同志の対戦だとかなりの確率で引き分けまで粘りますね。
プログラムの中では、盤面の情報が以下のように入っているので、
その動きを中心に得点の付け方や手の決定などをご覧ください。
・盤面情報の変数
石の配置情報 int koma[16][16]・・・・・その目にある石。0でなし、1で黒ー1で白
得点 int score[16][16]・・・・その目の得点
戻る