ミリタリーゲームでコンピューターを倒す方法

ヒント付きの軍事ゲーム Military Webと呼ばれるJava Web Startテクノロジーデモのリストには興味深いゲームが1つあります( Military Gameをクリックすると、ブラウザーからゲームを開始できます)。

ゲームのルール:

黒がゲームを開始し、プレイヤーは順番に動きます。 赤いチップは隣接するセルに移動でき、黒いセルは上または横にのみ移動できます。

黒は赤チップをブロックすることで勝ち、赤チップは移動できなくなります。 赤は、一番下のセルに到達するか、10個のパッシブ(アップではない)の後、黒が連続して移動します。

ブラックチップでコンピューターに勝つことは簡単なことではありませんでした。 いくつかの戦略を見つけましたが、それらからの逸脱は敗北につながりました。 それから私は、負けないようにどんな動きができるかを教えてくれるプログラムを書くことにしました。 また、赤いセルを上部セルではなく側面でブロックできるかどうかを知ることも興味深いものでした。

結果は軍事ゲーム(ヒント付き)です (クリックして開始します)。

仕組み:

プログラムは、次のゲーム理論のルールを使用して、ゲームの状況(状況はフィールド上のチップの位置とウォーキングパーティーによって記述される)が勝っているかどうかを計算します。

1)少なくとも1つの動きがプレーヤーBの負け状況につながる場合、その状況はプレーヤーAの勝ちです。
2)すべての動きがプレーヤーBの勝利状況につながる場合、プレーヤーAの状況は負けています。

つまり、対戦相手を自分の力で勝ち取った状況にすると、負けになり、逆もまた同様です。 ゲームのすべての状況を評価した後、勝つための歩き方をお伝えします。勝つ(私たちにとって)は、負ける(対戦相手にとって)状況につながるすべての動きです。

勝利の動きを視覚的に示すために、私は軍事ゲームを優れたjadプログラムで逆コンパイルし、そこに自分のクラスを追加し、対応するpaintComponentメソッドに緑色の矢印を描画しました。 まあ、それだけです。 お楽しみください!

そして、私は繊細な男と彼のサッパーに関するメモのおかげでこの話全体を思い出しました

Source: https://habr.com/ru/post/J16219/


All Articles