問題タブ [chess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
artificial-intelligence - 正確な評価関数とは何ですか?
私は何時間も探していましたが、「正確な評価関数」の適切な定義を思い付くことができませんでした。
できればチェスAIに関して、正確な評価関数とは何か、そしてそれがヒューリスティック評価関数とどのように異なるか(そしてそうであるかどうか)を知りたいです。個人的には、評価関数は、現在の状態に基づいて将来の状態を評価する機能にすぎないと思いました。それらが別々のカテゴリーに分類されていることに気づきませんでした。
どんな助けでもいただければ幸いです!
〜レイ
java - Java チェス アプレット
アプレットに表示する必要があるチェス プログラムを Java で作成しています。現在、チェスの駒の配列を埋めるのに問題があります。これは現在、JApplet の paint() メソッドで行われていますが、paint は複数回呼び出される可能性があるため、これが間違っていることはわかっています。配列を作成して初期化メソッドに入力しようとしましたが、まったく機能しません。どんな助けでも大歓迎です。
c++ - DOM内の要素をすばやく選択する
背景:私の大学のコースの1つで、チェスを作っています。GUIはすでにコントローラーへのフックで終了しています。私がしなければならないのは、オブジェクトを実装することだけです。従来は、各タイプのオブジェクトに適したネイティブ構造、移動履歴のスタック(サポートされていませんが、やり直しはできません)、ボードの2D配列/ベクトルなどを使用していました。仕様の一部は、ロードする必要があることです。ゲームを特殊なXML形式で保存するので、DOMDocumentを使用してゲーム全体を保存したいと思います。これにより、DOMの読み込み/保存アクションを実装するライブラリがある場合、XMLと構造の間で変換する必要がなくなるため、読み込みと保存が非常に簡単になります。
問題:速度。チェスのすべてのアルゴリズムでは、場所によって多くの選択を行う必要があります。
XML形式(変更不可):
次に、すべてのピース要素を取得し、属性を除外する必要があります。これはO(n)操作です。配列/ベクトルの実装では、単純なインデックス作成であるため、O(1)時間を簡単に達成できます。特に膠着状態を検出する場合、O(n)の価格は高すぎて支払うことができません。
どのように速度を向上させますか?私は基本的にDOMにインデックスを付ける方法を探しています。私はいくつかのアイデアを持っていますが、この問題をどのように解決しますか?
参考までに、私はC ++で開発しており、おそらくXML用のXercesライブラリを使用しますが、実際のコードではなく、主にアイデアを探しています(ただし、それは役に立ちます)。
c - Cでのビットボードチェスプログラミング
Cのこのコードに問題があります。
さて、なぜビットボードはすべてのビットが1に設定されていないのですか?
ご不明な点がございましたら、コメントを追加してください。Ty:D
cocos2d-iphone - チェスのようなゲームに適した iPhone UI フレームワークは何ですか?
iphone/ipad 用のチェスのようなゲームを開発しようとしています。objective-c と c++ を使用して内部ゲーム ロジックを開発しました。
私が知る限り、Core Graphic、cocos2d を使用できました。
もっとありますか?そして、チェスのようなゲームに最も適しているのはどれですか? (例: 固定ボードを表示する、ボードにチェスの駒を追加する、ボードから駒を取り除く、ボード上で駒を移動する)
私の質問が混乱を引き起こしている場合は、言い換えました。これにより、少し明確になることを願っています。どうもありがとう
c# - アルファベータ法によるミニマックス; クラス変数または再帰を介してそれらを送信しますか?
アルファベータ法でミニマックスを使用する場合、再帰を介して送信する代わりに、クラス変数としてアルファとベータを使用することは可能ですか?
それ以外の:
私は書くことができます:
そうすることでコードを最適化しようとすると(各再帰にintを送信する必要がない場合は、少し時間がかかる可能性があると思いました)、チェスプレーヤーが突然馬鹿になり、ポーンを殺すために女王を犠牲にし、他の愚かな過ちを犯しました。
彼は常に「通常のアルファベータ」の対戦相手よりもパフォーマンスがかなり劣っています。これは、対戦相手と比較してツリーのごく一部しか検索しないためだと思います(どちらも同じ深さを使用していますが、変更されたプレーヤーは剪定しているようです)より積極的になり、それによって訪問されるノードの数が減ります)。念のため、これを2回行いました。ここで切り取ったもの以外は、何も変更しません。
アルファベータアルゴリズムが正しいことを理解していれば、これは何の違いもありませんが、私のチェスプレーヤーにとっては違いはあります。私は何か間違ったことをしていますか?
ですから、今の私の主な質問は、それが最適化の観点から、またはコードの実践の観点から良いことであるかどうかではなく、むしろそれが可能であるかどうかです。
windows-phone-7 - Windows Phone と大きなメモリ割り当て
WPhone に移植しようとしているチェス エンジンについて書いた古いコードで遊んでみたいと思います。私の古いコードは、最大 20 MB の非常に大きなハッシュ構造 (いわゆる転置テーブル) を使用しています。この要件は、WP7 で動作するゲームに受け入れられますか、それとも別の構造を使用する必要がありますか (このオプションは、Refutation Table と呼ばれる大量のメモリがない場合に使用されるものです) ?
algorithm - プログラムは、別のプログラムがチェスをプレイしているかどうかを判断できますか?
次の問題が気になります。私は明らかに実用的な解決策を期待していませんが、これに関する開発者の考えをいただければ幸いです。
理論的には、他のプログラムを開き (引数のために、.exe ファイルを開くとしましょう)、特定の実行可能ファイルが実行されたときに (入力とマシンの状態が固定されている場合)、チェスのゲーム (それが実行する可能性のある他のタスクの中で)。
「チェスをする」とは、チェスの盤と駒を表現し、組み込みのチェス AI エンジンに由来する黒と白の後続の動きを適用することを意味します。
このような理論上の「チェス検出プログラム」には、必要に応じてスキャンされた実行可能ファイルを実際にシミュレートする仮想マシンまたは PC エミュレーターなどを含めることができます。同上RAMを備えた任意の速度のコンピューターで実行されると想定できます。
(編集)停止の問題に関しては、次のように解決できます。
プログラムを仮想マシンにロードします。仮想マシンには N ビット (ハード ディスクとメモリ空間と CPU レジスタを合わせたもの) があります。この仮想マシンは、最大で 2^N の異なる状態を想定できます。
VM でプログラムを段階的に実行します。各ステップの後、停止したかどうかを確認します。はいの場合: 問題は解決しました (結果: はい、停止します)。いいえの場合: 仮想マシンの現在の状態を取得し、この状態が以前に遭遇した状態のリストに存在するかどうかを確認します。はいの場合: 問題は解決しました (結果: いいえ、永久に実行されます)。いいえの場合: この州をリストに追加して続行します。
発生する可能性のある異なる状態は最大で 2^N であるため、このアルゴリズムは、プログラムが有限時間内に確実に停止するかどうかを判断します。
(編集 2) スキャンされた実行可能ファイルまたはそれが実行される (仮想) マシンの (無限) 無限性について、あいまいさがあるようです。スキャンする実行可能ファイルが最大で 1 GB (ほとんどのチェス プログラムはかなり小さいため、これで十分なはずです) であり、10 GB の RAM を搭載した PC (または VM) で実行されるとします。
私たちの理論的なチェス検出器プログラムは、任意の量の RAM を使用できます。
algorithm - ワーンスドルフの法則でナイトのツアーを改善するには?
同様のスレッドがいくつかあることは知っていますが、SOの外でも解決策が見つかりませんでした。ここに私の問題があります: Knight's Tour 問題http://en.wikipedia.org/wiki/Knight%27s_tourに対して Warnsdorff のアルゴリズムを実装しましたが、場合によっては解決策が得られません。私が読んだいくつかの場所では、いくつかの変更によりはるかにうまく機能する可能性がありますが、どの変更がそれらであるかを誰も指定していません. 誰かが解決策を知っていますか?私は他のアルゴリズムを知っていますが、それらははるかに複雑です。
8x8 のチェス盤であっても、適切な解が得られないことがあります。これは古典的な Warnsdorff のコードなので、コードを読んでも意味がないと思います。次のステップで可能な動きをチェックし、可能な動きが最も少ないものを選択します。
java - チェス ゲームのボード プレゼンテーションの作成
チェスゲームの課題用に 8 x 8 の正方形のボードを作り始めています。ただし、Javaで2D配列ではなく正方形を作成するためのヒントがあるかどうか疑問に思っています。
割り当ての制限の 1 つは、2D 配列または類似のものを使用することを許可しません。AI はなく、ユーザー コントロールのみです。