私はしばらくの間、同じプログラムのアルゴリズムを作成しようとしています。
もちろん、あなたのプログラムが最初にすべきことは、5を形成して勝つ方法があるかどうかを確認することです。ない場合は、次に、対戦相手がそれを実行できるかどうかを確認し、実行できる場合は防御します。
五目並べを自分でプレイしたことはありますか?あなたは基本をどれだけよく理解していますか?
さて、次のステップは考えることです:私たちが勝つことができる位置にどのように到達することができますか?明らかに、勝つためには4つ続けて持っている必要があります。しかし、次のように4つ続けて形成します。
__________
____XOOOO_
__________
その後、対戦相手はそれを閉じることができます。
しかし、次のように「オープンフォー」を形成すると、次のようになります。
__________
____OOOO__
__________
そうすれば、対戦相手は両側を閉じることができず、あなたは勝つことができます。したがって、オープン4を形成することは、勝つための1つの方法です。さて、質問が来ます:どうすればオープンフォーを形成できますか?確かに、次のように「オープンスリー」を形成すると、次のようになります。
__________
____OOO___
__________
その後、対戦相手は私たちをブロックすることができます:
___________
____XOOO___
___________
そして、私たちは最初に戻っています。
勝つために、同時に2つのオープンスリーを形成することができます。
____________
____OOO_____
_____O______
____O_______
これで、対戦相手がそれらの1つをブロックした場合、もう1つを使用してオープン4を形成できます。
____________
_______O____
___XOOO_____
_____O______
____O_______
____________
そして勝つ:
________O___
_______O____
___XOOO_____
_____O______
____O_______
___X________
五目並べでは、2つのオープンスリーを同時に作成する場合、これは3x3と呼ばれます。
3つ両方が開いている必要があることに注意してください。理由を理解できますか?
勝つ方法は他にもあります。
4x3:勝利の動きと、なぜそれが勝利しているのかわかりますか?
____________
__XOOO______
__XXXO______
____OX______
____________
4x4:勝利の動きを見ますか?
____________
__XOOO______
__XXXO______
__OXOX______
___O________
__X_________
これらはゲームの基本にすぎません。戦術を知っていると、AIの構築方法を考えるのに役立ち、原則をハードコーディングできます。
当然、これはほんの始まりに過ぎません。これを実装して、フィードバックをいただければ幸いです。
私はJavaでプログラムを書こうとしています。あなたがプレイテストできるように私が行ったコードを見たいですか?まだあまり良くありませんが、そこから新しいアイデアを得ることができます。コメントと変数名はエストニア語で書かれていますが、理解するのは非常に難しいかもしれません。:(