-3

インターネットで4人用のチェスゲームを作ろうとしています。これまでのところ、私はこれらのクラスを持っています:

MultiPlayerServer
MultiPlayerServerThread

Client

MultiPlayerServerリッスンするポートを作成し、リッスンを開始するたびに、リクエストを処理Clientする責任をに与えますMultiPlayerServerThreadが、ここに私の質問があります:単一のクラスにゲームの状態を処理させたいのですが、単一の静的クラスを作成しますか? (もしそうなら、それはどこに行くのでしょうか?)これに加えて、サーバーはポーンと残りの実装を描画する場所としてクライアントデータを提供するため、クライアントは多くの作業を必要とします。

TL; DRサーバークラス、サーバースレッドクラス、クライアントクラスを使用してマルチプレイヤーオンライン4プレイヤーチェスゲームを作成する場合、ゲームの1つのコピーを作成するのに適した場所であるため、複数の人が参加する場合は、それらはすべて同じゲームに参加し、自分でゲームを作成することはありません。

4

1 に答える 1

1

MultiPlayerServerは、ゲーム状態のインスタンスを「所有」する必要があります。これは、すべてのプレーヤーに共通です。MultiPlayerServerThreadクラス(クライアントへの接続を抽象化する)には、この共通オブジェクトへの参照が含まれています。

クライアントが移動すると、この一般的なゲーム状態にアクセスし、移動が合法である場合は変更されます。

各クライアントは別々のスレッドで実行されるため、通常、2つのクライアントがまったく同時に状態を変更しないように同期する必要があります。チェスでは、一度に1人のプレーヤーだけがゲームの状態を変更できるため、これはそれほど問題にはなりません。ただし、「ゲームの状態」を拡張してチャットログなどを含める場合は、これを導入するように注意してください。

後でMultiPlayerServerがいくつかのGameStateオブジェクトを追跡するようにしたい場合があることを念頭に置いて、これを設計する必要があることに注意してください。これにより、チェスサーバーは複数のチェスゲームを同時に実行し続けることができます。どのプレーヤーがどのゲームでプレイしているかを追跡するには、追加のロジックが必要になります。

于 2013-03-23T20:44:46.920 に答える