問題タブ [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.
java - 時間がなくなると、Javaの再帰から抜け出します
チェスのようなゲームにAIを実装しています。ボードの可能なすべての状態を試し、「最良の動き」を選択するために再帰を使用するつもりです。
移動ごとの時間制限があるため、時間制限に達するたびにこれらの再帰的手順から抜け出すための何らかのメカニズムが必要です。もちろん、再帰呼び出しを行う前に時間をチェックし続け、現在の時間が制限に近い場合はブレークアウトすることができますが、それは私のプログラムのパフォーマンスとのトレードオフです。
タイマーが終了するたびに、これらの再帰的な手順から抜け出す方法があれば素晴らしいと思います。しかし、私はJavaを初めて使用するので、Javaでそうする方法があるかどうかわかりません。サンプルコードを教えてください。:)
c++ - OpenCV ツールを使用して、連続する画像の違いからチェスの動きを検出する
ねえ、私は単純なチェス プレイ ロボットの視覚システムをコーディングしています。以前の研究を改善して、カメラと標準のチェス セットを使用し、ゲーム中に両方を動かすことができるようにしようとしています。これまでのところ、Web カメラを介して取得した画像でボードを見つけることができます。連続した画像の差分をとって何が変わったかを判断し、ボードの占有率に関する以前の情報を使用して動きを検出することで動きを検出したいと考えています。
私の問題は、現時点では変更を確実に検出できないように見えることです。現在のパイプラインは次のようになります。コピーして距離変換を行う->最大のブロブを取得します(DTおよびフラッドがそのブロブを埋める後の最大値に対応します)->DTが変更を無視するのに十分小さい値を返すまで繰り返します。
これらすべてを OpenCV と C++ でコーディングしています。しかし、私の塗りつぶしは常にブロブを塗りつぶしていないように見えるため、ほとんどの場合、検出された変更は1つだけです。私も使用してみcv::inpaint
ましたが、どちらも役に立ちませんでした。私の質問は次のとおりです。私は間違ったアプローチを使用しているだけですか、それとも何らかの形でチューリングを行うと、変更検出の信頼性が向上します。前者の場合、妥当な時間内に C++/Python および/または OpenCV でコーディング可能な代替ルートを提案できますか?
ありがとう
c++ - C++ ポインタのコピー
こんにちは、C++ の 2D 配列ポインターの内容を別の場所にコピーし、別のポインターを別のポインターに設定して、コピーしたポインターを変更しても元のデータに何も起こらないようにする方法を知りたいですか?
基本的に、チェス盤の駒への配列ポインタです。のようになりPiece * oldpointer = board[8][8]
ます。今、Piecesヘッダーファイルにあるetcのようなメソッドを含むこのポインターのすべてのコンテンツgetvalue(), getcolor()
を別の場所にコピーし、ポインターを設定して、そこで操作を行い、この元のデータに影響を与えずにテストできるようにしたいですか? 使用しなければならなかった場所を読みましたallocate()
が、よくわかりません。助けてください
php - チェスベースの入力を検証するための正規表現?
HTML/CSS/PHP を使用したチェス ベースの趣味のプロジェクトに取り組んでいます。以前はチェスに詳しくなかったので、特定の駒の種類と正方形に基づいて、どの動きが許可されているかを示すツールを作成することにしました。
2 つのテキスト フィールドを持つ HTML フォームがあります。1 つはピースのタイプ用で、もう 1 つはそのピースの現在の正方形用です。すべてが機能しますが、正規表現を使用した検証を含めたいと考えています。
駒タイプの大文字と小文字を区別しない有効な入力は、p、ポーン、r、ルーク、b、ビショップ、n、ナイト、q、クイーン、k、キングです。
正方形の有効な、大文字と小文字を区別しない入力はLetterNumber です。ここで、LetterはAHで、Numberは1-8です。
だから、正規表現を使用することが可能/実用的かどうか疑問に思っています。ピースタイプに論理和を使用した条件文を使用するだけでよいと考えていますが、他の解決策があるかどうか知りたいです。
php - JavaScript を使用してこのフォームを検証するにはどうすればよいですか?
HTML/CSS/PHP を使用して、チェスをベースにしたシンプルな趣味のプロジェクトを作成しました。タイプ、場所、色に基づいて、特定のピースの可能な動きをリストして表示します。ただし、プログラムはボード上の他の部分を考慮しません。
ご覧のとおり、フォームは正常に機能し、サーバー側の検証が行われています。私の問題は、フォームの 2 つのテキスト フィールドのサーバー側の検証 [わかりやすくするために編集] を最初から翻訳するほど JavaScript に精通していないことです。JavaScriptの 2 つの入力に対して、私の PHP 検証コードを複製するのを手伝ってくれる人はいますか? 最終的にJSに精通したいので、フレームワークは使いたくありません。
- フォームの PHP コードは次のとおりです: http://pastebin.com/embed_js.php?i=0LRJxkFg
- 処理用の PHP コードは次のとおりです (76 ~ 120 行を参照) http://pastebin.com/embed_js.php?i=pksn9xPd
どんな助けでも大歓迎です。
artificial-intelligence - ビットボードの占有ビット マスクの取得
私はチェス盤を表し、合法的な動きをチェックするためにビットボードで遊んでいます。私が立ち往生しているのは、スライディング ピース攻撃におけるソース スクエアと宛先スクエア間の占有率の計算です。ルックアップでやりたくないので、ルックアップなしで間にある正方形のマスクを取得できるかどうかを調べようとしています。たとえば、次のボードでは、c4 に Rook があります。
空の正方形 (または占有された正方形、より簡単なもの) を表すビットボードと疑似有効な移動 Rf4 (Rook は c4 から f4 に移動できます) が与えられた場合、正方形 d4-e4 (ソースと宛先の正方形を除く) のマスクを取得する方法?
これが明確になると、垂直方向の移動は簡単になり、回転したビットボードを使用して斜め方向の移動を計算できるようになると思います。
編集:ビットボードは ulong/unsigned int64 で表され、8 ビットの各パックは実際のボードのランク/行を表します。
python - Pythonでpgnファイルから移動情報を抽出する
Pythonでpgnファイルから移動情報を抽出するにはどうすればよいですか? 私はプログラミングが初めてで、助けていただければ幸いです。
java - チェスのゲームを設計して、馬以外の駒が他の駒を飛び越えないようにする必要があります。それにはアルゴリズムが必要です。
ここからチュートリアルを読みました リンク! これにより、ピースの基本的なレイアウトが得られますが、ピースが他のピースを飛び越えるようになりました。ソースと宛先の正方形の間に中間のコインがあるかどうかを確認する方法を知ることができます。
java - 既存の JPanels の上に JLayeredPane で描画する
私はチェスゲームの開発に取り組んでいます。ボード コンテナで GridLayout を使用して JPanels の 8x8 グリッドを表示したいと考えています。(これにより、選択した正方形や有効な動きを強調表示するなどの機能がはるかに簡単になります。) 次に、このレイヤーにピースを追加して、ドラッグ アンド ドロップできるようにしたいと思います。最初は個々の正方形の JPanels に描画して表示していましたが、後でドラッグ アンド ドロップしようとすると問題になると考えました。それ以来、JLayeredPane をメイン コンテナとして使用しようとしてきましたが、いくつかの問題が発生しました。
1 つは、JLayeredPane の GridLayout を指定すると、JLabel またはその他の種類の画像を追加するレイヤーを指定するために使用する整数に関係なく、ピースがグリッドに追加され、位置が設定され、歪むことです。ボード全体。LayoutManagers を使用すると、JLayeredPane でのレイヤーの配置が妨げられる可能性があることを読んだので、これはそれほど驚くべきことではありません。(ただし、JLayeredPane チュートリアルの Oracle デモ プログラムはこれをうまく行っているようです: http://download.oracle.com/javase/tutorial/uiswing/examples/components/LayeredPaneDemo2Project/src/components/LayeredPaneDemo2.java )
ただし、JPanels のグリッドを独自の JPanel に配置してから、それを JLayeredPane の下位レイヤーに追加しようとしました。ドラッグ アンド ドロップ アイコンを追加して、不透明でない JPanel を上位レイヤーに分離できるという考えです。 JLayeredPane のレイヤー。ただし、これを行うと、単にグリッド JPanel を JLayeredPane 内に配置した後 (つまり、ドラッグ アンド ドロップ レイヤーを追加する前) に、グリッドが表示されなくなります。
また、JLayeredPane の paintComponent (およびペイント) メソッドをオーバーライドしてピース画像を描画しようとしましたが、それらは JPanel によって隠されています (JPanels を非不透明に設定することで、それらが実際にそこにあることがわかります)。 JLayeredPane でグラフィックスのレイヤーを設定するオプションがないことがわかります。また、フレームのglassPaneを使用してピースを描画しようとしましたが、そこでも望ましくない動作が発生しました。
この動作の一部、またはどこが間違っているかを説明する助けがあれば、大歓迎です!