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