0

Visual Basic でチェスのマルチプレイヤー ゲームを作成しようとしています。LAN 経由ではなく、通常の方法でプレイする 2 人用のプレーヤーです。
ここまでで、ボードの設計が完了しました。

私の論理は次のとおりです。
まず、任意の正方形をクリックすると、クリック イベント ハンドラーがその正方形にピースが存在するかどうかを確認します。そうでない場合は、ピースをその正方形に移動するかどうかを確認します。両方が負の場合、何もしません。

さて、これに関する問題は、クリック イベントをどのようにコーディングするかということです。また、2 次元配列を使用してボードを表現しました。しかし、移動ごとに位置を更新するにはどうすればよいでしょうか? また、合法的な動きが実行されているかどうかを確認するにはどうすればよいですか? 追加したいもう 1 つのことは、ピースをクリックするたびに、有効な正方形を強調表示する必要があることです。

このために、私が行ったことは、任意の正方形のすべてのクリック イベントに対して、ピースがあるかどうかをチェックすることでした。ピースがあれば、If-Else-If ロジックを使用してそのピースのすべての可能な動きを強調表示しましたが、面倒で長すぎることが判明しました。発生した別の問題は、ユーザーが空の正方形をクリックしてそこに駒を移動した場合、どうすればそれを知ることができるかということでした。

私を助けてください。

4

2 に答える 2

1

「しかし、移動ごとに位置を更新するにはどうすればよいでしょうか?」

ピースが移動しようとしているとき:

ピースがそのように動くかどうかを確認します。(ビショップみたいに斜めにしか動かない)

チームの駒が移動しようとしている位置にないことを確認してください。

移動が既に行われている場所に 2 番目の配列を作成します。

移動が合法であったかどうかを確認します。(あなたの番ですが、あなたのキングは一手で倒せます)

これを確認するには、次のものが必要です。

キングスポジションを獲得するには

そして、対戦相手の可能なすべての動きを調べます

動きがあなたの王の位置に上陸できるかどうかを確認してください。

于 2012-06-19T07:28:02.063 に答える
0

この質問は実際にはスタック オーバーフローには適していませんが、次の点に注意してください。

というクラスを作成する必要があります。ChessPiece

これには、ボード上の現在の位置を保存する and のようなプロパティIsWhiteLocationXLocationY次のような列挙型になる PieceType があります。

Public Enum ChessPieceType
    King
    Queen
    Bishop
    Pawn
    'etc
End Enum

これらのクラスのある種の配列を作成して、ボード上のピースごとに 1 つ作成し、ゲームの開始時にこれらの位置を手動で設定できるようにする必要があります。

ユーザーが駒を動かそうとすると、PieceType 列挙をチェックして、チェスの駒のタイプが実際にそこに移動できることを確認し、その正方形に自分の駒が 1 つもないことを確認します。

于 2012-06-19T10:12:11.360 に答える