問題タブ [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.

0 投票する
2 に答える
895 参照

c# - チェスゲームC#のコードに画像を挿入する

2日前にチェスゲームについて質問したところ、友達から下のコードを教えてもらったのですが、質問があります。このリンクでした

参照してください:プライベート画像Displayimage;

チェスの駒の画像をどのように入れるべきか、どこに置くべきかわかりません。クラスPiecePosition{

0 投票する
3 に答える
2109 参照

c# - コンパイルエラー:フィールド初期化子は、非静的フィールド、メソッド、またはプロパティを参照できません

以下のコードをコンパイルすると、コンパイラーはエラーを出します:フィールド初期化子は、このコード(星が付いている)の非静的フィールド、メソッド、またはプロパティを参照できません

誰かが私を助けることができますか?

0 投票する
3 に答える
74214 参照

chess - チェスゲームのオブジェクト指向設計

オブジェクト指向の方法で設計し、考える方法の感触を得ようとしており、このトピックに関するコミュニティからのフィードバックを得たいと考えています。以下は、オブジェクト指向でデザインしたいチェス ゲームの例です。これは非常に広い設計であり、この段階での私の焦点は、誰がどのメッセージを担当しているか、オブジェクトがどのように相互に作用してゲームをシミュレートしているかを特定することだけです。悪い設計要素 (高結合、悪い結束など) がある場合は指摘し、それらを改善する方法を教えてください。

チェスゲームには次のクラスがあります

  • ボード
  • プレーヤー
  • ピース
  • 四角
  • チェスゲーム

Board は正方形で構成されているため、Board に Square オブジェクトの作成と管理を任せることができます。各ピースも正方形上にあるため、各ピースはそれが置かれている正方形への参照も持っています。(これは意味がありますか?)。次に、各ピースは、ある正方形から別の正方形に移動する責任があります。Player クラスは、所有するすべてのピースへの参照を保持し、それらの作成にも責任があります (プレーヤーはピースを作成する必要がありますか?)。Player にはメソッド takeTurn があり、このメソッドは、ピースの位置を現在の位置から別の位置に変更するピース Class に属するメソッド movePiece を呼び出します。今、私は Board クラスが何を担当しなければならないのかについて混乱しています。ゲームの現在の状態を判断し、いつゲームが終了するかを知るために必要だと思いました。しかし、ピースが変わるとそれが変わる」の場所は、ボードをどのように更新する必要がありますか? ピースが存在し、ピースが移動すると更新される正方形の個別の配列を維持する必要がありますか?

また、ChessGame は最初に Board オブジェクトと player オブジェクトを作成し、これらのオブジェクトがそれぞれ正方形とピースを作成してシミュレーションを開始します。簡単に言うと、ChessGame のコードは次のようになります。

ボードの状態がどのように更新されるかは不明です。ピースにはボードへの参照が必要ですか? 責任の所在はどこにある?誰がどの参照を保持していますか? あなたの意見を参考にして、このデザインの問題点を指摘してください。私は意図的にアルゴリズムやゲーム プレイの詳細に焦点を当てていません。私はデザインの側面にのみ関心があるからです。このコミュニティが貴重な洞察を提供できることを願っています。

0 投票する
2 に答える
809 参照

chess - LAN用のチェスゲームを作るために必要なヘルプ

私は独学のコンピュータープログラミング愛好家です。私はC、かなりのJavaを学び、現在Pythonを学んでいます。私の大学では、キャンパス内に内部LANがあり、最近、LANを介してキャンパス内のユーザーがプレイできるチェスゲームを作成するというアイデアに思いつきました。

ゲームは、ユーザーが自分のユーザー名とパスワードでログインできるログインシステムを持っているだけです。ログインすると、現在オンラインになっている人のリストが表示されます。彼らはどのプレイヤーにも挑戦することができます。チャレンジされたプレイヤーはチャレンジの通知を受け、それを受け入れるか拒否することができます。受け入れられると、2人のプレーヤーは1対1のチェスゲームをプレイします(時間制限あり)。また、プレイヤー同士がチャットできるようにしたいと思います。そうするのはそれほど難しいことではないと思います。:)

私は以前に小さなゲームを作ったことがありますが、オンラインでプレイできるゲームはありません。むしろ、私はこのゲームの作成に入るネットワーキングの概念について多くの考えを持っていません。そのようなアプリケーションを作成するために私が何を学ばなければならないかについて、誰かが私に考えを教えてもらえますか?

JqueryとAJAXを使用したWebアプリケーションは非常に簡単に作成できることは知っていますが、デスクトップアプリケーションを作成したいと思います。前もって感謝します :) 。

0 投票する
1 に答える
107 参照

c# - 別のクラスのプロパティを使用する

簡単な質問があります。クラスのプロパティを別のクラスで使用するにはどうすればよいですか?クラスにピクチャボックスがあり、ピクチャボックスのピクチャを別のクラスで使用したいのですが、どうすればよいですか?ありがとうございます。

0 投票する
1 に答える
1589 参照

c# - ピクチャーボックスの動画

こんにちは、シンプルなチェスゲームを作っている友人です。ピクチャーボックス間を移動する方法を知りたいですか? picturebox2 の上にあります。ご協力ありがとうございます

たとえば、次のようにします。

出来ますか?

0 投票する
1 に答える
633 参照

artificial-intelligence - 抽象戦略ゲームの評価関数

C# と XNA を使用して抽象的な戦略ゲームをコーディングしています。AI に関しては、現在ネガスカウトと深さ 5 を使用しています。ゲームの説明は次のとおりです。

このゲームは、6x7 の六角形の場所のボード、42 の六角形のタイル、各プレーヤー (最大 2 プレーヤー) の 6 個のピース​​ (キング 1 個とポーン 5 個) で構成されます。

ゲームの最初の段階で、プレイヤーはボードの空いている場所にランダムなタイルを交互に配置します。各タイルには、端を指す最大 6 つの矢印を付けることができます。一部の矢印は、2 方向を指すことができます。矢印は、そのタイルからの移動方向を意味します。二重矢印は、有効な場所がある場合、駒を 2 つの場所に移動/ジャンプさせます。ボード上にまだ空の場所が残っている場合、プレイヤーは対戦相手の列にタイルを配置することはできません。

このフェイズが完了すると、次のプレイヤーが自分のキングを自分に最も近い列の 6 つのタイルのいずれかに置きます。次に、駒の移動が始まります。駒はタイルの矢印に従って移動します。キングを捕まえるかブロックすることでゲームに勝利します。

では、わざ生成関数に移りましょう。

  1. タイル配置段階 a) 最も近い列にタイルを配置します。最適な回転を見つけるために、タイルが回転されます。b) 一番近い列がいっぱいになったら、四方を囲まれた空いている場所にタイルを置きます (つまり、ボードの端はありません)。タイルを回転させて、最適な回転を見つけます。c) 場所が見つからない場合は、残りの空の場所をすべて追加し、最適な回転を見つけようとします。

  2. キング配置段階 a) 最高のタイルがある場所を見つけ、そこにキングを配置します。b) 残りのポーンを列の残りの空いている場所に置きます。

  3. 移動ステージ a) キングが攻撃された場合、その駒が防御されていない場合は、攻撃している駒を攻撃しようとします。b) 攻撃されているすべてのプレイヤーの駒に移動を追加します。c) プレイヤーが攻撃できるすべての対戦相手の駒を追加します。d) プレイヤーが移動できるすべての場所を追加します。

次に評価関数です。

  1. タイル配置段階のスコア = 現在のプレーヤーがこれまでに配置したタイルの数 + 現在のプレーヤーの最も近い列のタイル - なし。対戦相手がこれまでに配置したタイルの数 - 最も遠い行 (対戦相手に最も近い) にある対戦相手のタイル。

  2. キングプレイスメントステージスコア=最も近い列にある現在のプレーヤーのタイル-最も遠い列にある対戦相手のタイル(対戦相手に最も近い)。

  3. 移動ステージスコア=手番プレイヤーの駒の価値-相手の駒の価値。

タイルの重み付けは、矢印が指している有効な場所ごとに 100 です。パーツの重み付けは次のとおりです。

ピースの値 = ピースの種類 (キング = 10000、ポーン = 1000) + 機動性 + 防御 - 攻撃 - 包囲 - ブロック

ここで、可動性 = いいえ。ノードが移動できる場所の数 (空いているか対戦相手が占有している) * 1000 防御 = いいえ。この場所に実際に移動できる、このピースを囲む現在のプレイヤー ピースの数 * 攻撃された 1000 = いいえ。実際にこの場所に移動できる、このピースを囲む対戦相手のピースの数 * 1000 ブロック = (キング = -10000、ポーン = -1000) ピースは移動できません。すべての矢印が無効な場所を指しており、ピースがこのゲームで再び移動する可能性がないためです.

かなり長いですが、ここに私の問題があります:

  1. タイルを配置するとき、AI は間違った回転を使用してタイルを配置することがあります (つまり、矢印が有効な場所を指していない場所にタイルを配置します)。時々、これは彼の「ホーム」列で発生します。

  2. ピースを動かすとき、AI はキングの安全性を無視しています。主にキングを動かし、4~6手で攻略。

特にチェス AI の経験を持つ人で、AI、特に手の生成と評価機能を改善する方法についてアイデアや提案がありますか?

ありがとうイヴァン

ところで...メールを試すことに興味がある人がいたら、私に知らせてください。私のウェブサイトにセットアップをアップロードします。

0 投票する
4 に答える
171 参照

c# - このコードの問題は何ですか?

チェスゲームで王を動かすためのコードを書きました。キングが動かないこのコードの問題はどこにあるのか教えていただけますか?ありがとう。

編集2:

0 投票する
3 に答える
503 参照

c# - チェスゲームで王の座を獲得する

片側にキングとクイーン、もう片側にキングだけのシンプルなチェス ゲームを書いています。ユーザーとそれに応じて他の作業を行います。キングが滞在する場所をユーザーから取得する方法を知りたいのですが、64 個のピクチャボックスでフォームを実装しました。

編集:

私はジョン・スキート氏からこのコードを書きました 回答:どのような間違いがありますか?

0 投票する
6 に答える
2747 参照

c++ - チェスの駒の階層設計: 継承 vs 型フィールド

ピースの基本クラスがあります

および派生オブジェクトを含む配列

仮想機能による利点、クリーンなデザイン。欠点は、ボード内のピースを見つけたり、ピースを比較したりする必要がある場合、動的キャスト (または typeid) に戻さなければならないことです。これは醜く、何百万ものリクエストを行うとパフォーマンスが低下する可能性があります。

一方、ピースを識別するためのタイプフィールドを持つ単一ピースクラスの配列を作成すると、この問題は発生しません (そして、より高速になるはずです) が、非常に醜い switch ステートメントを作成する必要があります。ピースの数は有限であり、私自身がそれほど多くの切り替えを行っているとは思わないので、最終的にはこれがより良い選択になる可能性があると思いますが、どう思いますか?

これは楽しみのためです(ビットボードはありません)。

==いくつかの回答を読んで、演算子のオーバーロード ( 、!=、 ...) にのみ型フィールドを使用すると、両方の単語を最大限に活用できると思います。

boost::variant見た目もとても面白いです。