黑白软件设计

时间:2012-12-10 15:17:14

标签: java design-patterns reversi

我必须在我的大学设计一个版本的reversi用于实践课程。它应具有单人模式(针对自编AI),热门模式和通过互联网的多人游戏模式。 到目前为止,我已经在MVC中编写了reversei类,我使用了以下三个接口。 (Board-Class模拟了一个具有操作方法的电路板。) 但现在我想知道我应该如何实现这三个基本功能。我的第一个想法是实现第二层MVC(Hotseat,AI和Network各一个),其中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();

}

public interface 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();

}

1 个答案:

答案 0 :(得分:0)

由于这是一项大学任务,我不想详细说明答案。

我会在游戏和第二个玩家之间创建一种“协议”。由于玩家动作显然与控制器相关,我会实例化不同的第二玩家类,它们可以直接响应移动(= AI)或等待一些输入(无论是通过接口还是互联网)。 / p>

这与战略模式非常接近。