純粋にJavaScriptで書かれたチェスゲームAPIはありますか?フラッシュなし!チェスゲームで使用されるアルゴリズム(一般)を知っている人はいますか?
3 に答える
チェスのアルゴリズムはどのように機能しますか?:
チェス コンピューターがやろうとしているのは、5 つ、10 つ、または 20 手先のボード ポジション ツリーを生成することです。任意のボード位置に約 20 の可能な移動があると仮定すると、5 レベルのツリーには 3,200,000 のボード位置が含まれます。10 レベルのツリーには、約 10,000,000,000,000 (10 兆) の位置が含まれます。コンピュータが計算できる木の深さは、ゲームをプレイするコンピュータの速度によって制御されます。最速のチェス コンピューターは、毎秒数百万のボード位置を生成および評価できます。
ツリーが生成されると、コンピューターは「ボードの位置を評価する」必要があります。つまり、コンピューターはボード上のピースを見て、ピースの配置が「良い」か「悪い」かを判断する必要があります。これを行う方法は、評価関数を使用することです。考えられる最も単純な関数は、各面のピースの数をカウントするだけです。コンピューターが白でプレイしていて、ボードの特定の位置に白の駒が 11 個と黒の駒が 9 個ある場合、最も単純な評価関数は次のようになります。
11 - 9 = 2
明らかに、チェスの場合、一部の駒は他の駒よりも価値があるため、その公式は単純すぎる. したがって、式は各タイプのピースに重みを適用する場合があります。プログラマーが考えているうちに、ボードの位置、センターのコントロール、チェックするキングの脆弱性、対戦相手のクイーンの脆弱性、およびその他の多くのパラメーターなどを追加して、評価関数をますます複雑にします。しかし、関数がどんなに複雑になっても、そのボード ポジションの「良さ」を表す 1 つの数字に凝縮されます。
ソース。
基本レベルのチェックでチェスをプレイできる独自の JavaScript 'エンジン' を構築するためのステップ バイ ステップの Javascript Chess with CPU oppo
下にスクロールすると、純粋に JavaScript に基づいた非常に限定されたチェス エンジンのソース コードが含まれています。また、試用できるゲームの動作バージョンと、独自のゲームを構築するために必要なすべてのリソースも含まれています。
役立つリソース:
- Javascript でのチェス エンジンの最初の実装
- Tony Marsland によるThe Anatomy of Chess Programsは、現在のチェス プログラムがどのように機能するかについての優れた紹介です。
- チェススペース
- Paul Verhelst - 質問と回答
- Minimax Algorithms の参考文献(新しいバージョン)。
- Craftyは強力なプログラムであり、そのソース コードは自由に入手でき、チェス プログラムとしては非常に読みやすいものです。
- 未完の仕事とチェス プログラマーへの挑戦
- チェスに最適なアルゴリズムはありますか? ここでの議論
- How Computers Play Chessチェスの AI アルゴリズムの背後にある理論を説明している、私が見つけた最高の本
アルゴリズムの議論については、Chess Programming Wikiを試してください。
本格的なチェス エンジンに適したテクニックが、Web ベースのゲームに適しているとは限りません。実際のチェス エンジンは桁違いに高速に実行され、数メガバイトのオープニング ブックを使用し、各ターンに数分から数時間を費やします。実際のチェス エンジンは 12 プライよりも深く検索しますが、JavaScript は合理的な Web 時間で 6 プライをはるかに超えることはありません。したがって、ピーススクエアオラクルのようなものは、検索が深まるにつれて減少し、おそらく負のリターンを持ち、その結果、チェスプログラミング界では流行遅れになっていますが、JavaScriptエンジンには間違いなく適しています. 80 年代に人々が行っていたことを実行すると、ほとんどの訪問者を打ち負かす、機敏で扱いやすいエンジンになります。
そしてもちろん、他の人が何をしているかを実際に調べたいとは思いません。アルファベータ検索のバリエーションがあることを確認してから、評価関数とその他すべてを調整してください。
2002 年と 2012 年に、小さなパブリック ドメインの JavaScript エンジンであるp4wnを書き直しました。アルファベータとピーススクエア オラクルを使用します。おそらくGarbochess-JSよりも弱いですが、Garbochess には p4wn エンジン全体よりも大きなオープニング ブックがあります。
Computer Chess Blogでは、C# チェス エンジンの作成について説明しています。これは JavaScript ではありませんが、構文は十分に似ているため、さまざまなチェス エンジン コンポーネントをよく理解できます。
また、チェス エンジンを Web 対応にしたい場合は、Silverlight GUI で C# を使用することを検討してください。JavaScript よりも .NET の方が優れたパフォーマンスが得られます。学習するにつれて、これはより強力な (より深い検索) チェス プログラムに変換されます。Silverlight Chess の良い例は、GeeksWithChess.comにあります。