3

大学の実習用にリバーシのバージョンをデザインする必要があります。シングル プレイヤー モード (自作の AI に対して)、ホットシート モード、およびインターネット経由のマルチプレイヤー モードを備えている必要があります。今まで、私は次の 3 つのインターフェイスを使用する MVC で reversi のクラスを既に作成しています。(Board-Class は、ボードを操作するためのメソッドを備えたボードをシミュレートします。) しかし、3 つの基本的な機能をどのように実装すればよいか疑問に思っています。私の最初のアイデアは、MVC の 2 番目のレイヤー (ホットシート、AI、およびネットワークにそれぞれ 1 つ) を実装することでした。そこでは、reversiController が、ユーザーが行ったすべての入力を上位レイヤーに転送し、上位レイヤーがこの移動をどうするかを決定します。上位層の移動は、下位層のビューをフレームとして特徴付け、ユーザーに追加情報と可能性を表示することになっています (繰り返しますが、ゲームの種類によって異なります) これは合理的なアプローチですか、それともこの問題をどのように処理しますか? 前もって感謝します!

public interface IGame {
void addObserver(Observer obs);
Cell getCell(int i, int j);
Cell getWinner();
List<Move> generateMoves(Cell player); 
void move(Move move);
Cell getNextPlayer();
boolean hasEnded();
void reset();
boolean isLegalMove(Move move);
Board getBoard();

}

public interface IReversiView {

/**
 * Show Reversi UI
 */
void showReversi();

}

パブリック インターフェイス IReversiController {

/**
 * Sets the game's view.
 * 
 * @param view
 */
void setView(IReversiView view);

/**
 * Shows the user interface.
 */
void start();

/**
 * 
 * Handles a move called by the user and transmits it to the model.
 * 
 * @param x
 * @param y
 */
void handleMove(Move move);

/**
 * Resets the game to default state.
 */
void resetGame();

}

4

1 に答える 1

0

これは大学の課題であるため、詳細な回答は避けたいと思います。

ゲームと 2 番目のプレーヤーの間に一種の「プロトコル」を作成します。プレーヤーのアクションは明らかにコントローラーに関連するものであるため、別の 2 番目のプレーヤー クラスをインスタンス化します。これらのクラスは、移動 (AI) で直接応答するか、何らかの入力 (インターフェイスまたはインターネット経由) を待機します。

これはかなり戦略パターンに近いです。

于 2012-12-17T12:17:03.060 に答える