5

私はhtml5/JavaScriptで2人用ボードゲームに取り組んでいます。2人用バージョンはほぼ完成しています。コンピューターが対戦相手になるシングルプレイヤーモードを追加したい。このゲームは単一のブラウザでプレイされます(サーバー側の統合はありません)。

私はAIを初めて使用します。JavaScriptゲームでのAI実装に関するガイドラインが必要なのですが、どこから始めればよいですか?

助けてください。

編集: ゲームはバグチャルです

答えてくれてありがとう:バグチャルゲームにミニマックスを実装することができました。ここに。

4

5 に答える 5

8

Bagh-Chalの場合、アルファベータ法によるミニマックスアプローチを採用することをお勧めします。

アルゴリズムには多くの優れたリソースがありますが、ここにアルファベータプルーニングを使用したミニマックスのCS朗読があります。私は個人的にこれをAIアルゴリズムとは呼びませんが、AIの紹介でよく議論されます。

または、実際のAIアルゴリズムをトレーニングしてゲームをプレイすることもできます(ニューラルネット、遺伝的アルゴリズムなど)が、このアプローチはバグチャルのようなゲームではやや実用的ではないようです。

于 2011-02-01T20:40:32.980 に答える
3

ステップ1:(A)JavaScriptを学びます。

ステップ2:ボードゲームのAIアルゴリズムを学ぶ(B)。

ステップ3:AにBを実装します。

オプションのステップ4:別のボードゲームを選択します。次に、ステップ2に進みます。

于 2011-02-01T20:11:56.330 に答える
2

Lirikが言及したアルファベータプルーニングを備えたミニマックスは、始めるのに良い場所ですが、それに慣れていない場合は、頭を悩ませるのに少し時間がかかります。

あるいは、完璧なメモリがあり、高速な計算を実行してそれを実装しようとすると、ゲームをどのようにプレイするかを考えることができます。利点は、通常、理解しやすいことです。

ミニマックスはおそらく、ゲームによっては、ゲームが十分に単純な場合に完璧なゲームをプレイする可能性がある(ただし、ミニマックスに負けないことを好むという欠点もあります)対戦相手も完璧にプレーすることを前提としているため、勝ちます)

それは完全な情報のゲームのように聞こえるので(ボード全体が常にすべてのプレーヤーに表示されます)、無限の先読みを備えた適切に実装されたMinimaxは、決して失うことのないAIを提供できます(無限の計算時間を想定)。ミニマックスを使用するゲームでは、難易度は、アルゴリズムが何回先に進むかによって決まることがよくあります。ステップが増えると指数関数的に遅くなるため、ゲームが非常に単純でない場合はハードウェアの制限に遭遇します(これが、AIをプレイする完璧なチェスがまだない理由です。最後に確認したところ、私が読んだ記事の時点で最速のコンピューターで数千年、申し訳ありませんが引用はありません)

于 2011-02-01T21:03:16.027 に答える
1

最善の策は、厳密なAIアルゴリズム、つまり、特定の状況で常に同じことを行う対戦相手から始めることだと思います。

真の「AI」を実現するには、以前の入力を追跡し、それが正しい決定であったかどうかを追跡する機械学習アルゴリズムを実装して、改善できるようにする必要があります。これは、ニューラルネットワークに沿った何かで行われます。

于 2011-02-01T20:12:48.577 に答える
1

AIはありません。まだ。人間の考え方をシミュレートすることはできますが、ゲームに自分の代わりに考えさせることはできません。そして、javasccriptでは、関数、ループ、変数、配列文字列を使用する必要があります。コンピューターは、wievの1つのポイントでゲームをチェックし、最良のステップを計算します。たとえば、各ソリューションを1つのプロパティで降順に並べ替え、追加して最初の10項目の割合を増やします。次に、他の順に並べ替えて再度評価します。これらの瞬間のいくつかで、最も高い評価のステップが最適になります。

勝利戦略を作成する他の方法ですが、これはjsに実装するイベントではなく人間にとっても困難です。

みんながXOXゲームを知っている例を教えてくれればもっといいでしょう

3x3のテーブルがあり、勝つには3つのXまたはOを続けて配置する必要があります

_|_|_
_|_|_
 | |

これは地図です

これが勝利の1つの方法です

x|o|_
_|x|o
 |o|x

私はあなたが今覚えていると思います。

つまり、サーバーのAIは何を表しています。

ユーザーがXまたはOを入力すると(現在、ユーザーはX、サーバーはO)、サーバーは自分の状況をどの程度絶望的にするかを計算する必要があります

2つのXが連続していますか?はいの場合、マシンはOを中央または2Xの終わりに配置する必要があります。

2つのXが連続していない場合、マシンはどこかにトリックがあると計算する必要がありますか?

例えば

_|x|_
_|_|x
o| |

コンピュータはOを左上隅に移動する必要があるため、これはトリックです。そうしないと、マシンが緩んでしまいます。

これらはすべて、プレイ中に人間が尋ねる質問(if-elseステートメント)です。あなたが実装したいのなら、あなたは本当にあなた自身にあなたの考えを記録するように強制するべきです。

私が最初に何を検索しますか?hmmm.firstこれは多くの可能性を持っているので、私はXを真ん中に置きました。

AIを作成するために最も重要なのは、考え方をシミュレートすることです。幸運を。

于 2011-02-01T23:56:26.317 に答える