「リバーシ・ゲーム」(いわゆるオセロゲーム)のソースを公開しています。Webブラウザから直接実行することができます。ここにサンプルアプレットを置きました。以下の方法で展開することができます。*.javaとしてコンパイルします。*.javaとしてください。リバーシ・ゲームを開始できます。一応アルゴリズムを説明しておきます。ミニマックス法とαβ枝刈りを使用しています。この手のゲームの思考ルーチンでは、盤面を何手か先まで先読みします。先読みした上で、どの手を選ぶかを選択する戦略のひとつがミニマックス法です。ある程度の深さまで先読みした所で、その盤面の「評価値」を求めます。評価値とは、その盤面がどの程度自分にとって有利であるかを表す値です。高いものを選択します。敵が自分に有利になるようなことをするはずがないからです。定番と言えるアルゴリズムです。結果を変えずに所要時間を短縮するための手法です。盤面の評価値を求める関数(評価関数)であると言えるでしょう。このリバーシゲームでは、以下のようにして評価値を求めています。敵の石がある場合の評価値を合計することで算出します。各セルの評価値は隅に石があるかないかで変動します。隅が埋まった後には気にする必要がないためです。そこで、隅の状態により、評価値表を盤面の1/4毎に差し替えています。着手数(石が置ける場所の数)は多ければ多いほど有利です。ひっくり返す敵の石がひとつしかなければ、結局一度しか使えない。その手によりひっくり返される石(要石)の数も考慮に入れています。盤面と同サイズの2次元配列にフラグを立てるようにしています。盤の端のものを確定石と考え、カウントしています。---が、現在は、カウントしているだけで評価には使っていません。1986トップページに戻る。