本模块为游戏规则和界面设计计划于完成目前进展顺利预计将提前一天完成
本模块分两部分
)界面设计准备需要的图片文件等设计图形界面该部分设计已完成耗费时间两天主要类
MainFrame游戏窗口初步定为游戏本身将拥有三个逻辑成员
UI游戏界面只负责显示(完成)
GameMaster游戏管理者负责游戏秩序监控玩家行为及修改游戏状态
StateObserver游戏状态观察者观察游戏状态并在UI上显示(完成)
)游戏规则设计设计游戏规则及ChessPlayer和游戏间的互动主要类
GameMaster游戏管理者负责游戏秩序监控玩家行为及修改游戏状态当玩家为人类时监控若干ChessGrid及三个辅助JButton当玩家
为电脑AI时监控AI得到落子位置根据落子的位置及规则做出相应的行为最后修改游戏状态GameState包括记录棋谱和切换用户由
GameState激发其观察者StateObserver修改状态显示其拥有的域为
ChessGrid[][][]棋格数组
JButton[]辅助按钮
GameState游戏状态拥有两个玩家或为人类或为AI;
GameMaster部分算法
mouseClicked() {
//handle mouse event
//假如落子位置合法关闭ChessGrid监控
status = checkStep(current);
//假如需要辅助输入开启辅助Button监控;return;
nextPlayer();
}
actionPerformed() {
handle(Decision);
nextPlayer();
}
nextPlayer() {
//ready for next player
GameStateaddStep(currentDecision);
GameStatenextPlayer();
while(!GameStateisHumanTurn()) {
decision = GameStategetNextStep(current);
status = checkStep(current);
//假如需要辅助输入因为AI在计算current时必定已考虑好如何输入
handle(decision);
GameStateaddStep(currentDecision);
GameStatenextPlayer();
}
//开启ChessGrid监控准备接受人类输入
}
GameState为被观察者拥有两个ChessPlayernextPlayer()中首先notifyObserver()修改状态然后指向下一个ChessPlayer在
getNextStep()中调用当前ChessPlayer提供的getNextStep()方法获取AI计算结果
StateObserver为观察者观察GameState的状态并做出相应修改
目前剩余的任务有
)GameMaster中需要判断游戏结束游戏结束条件将在下列条件中选择
a)无法继续落子判和
b)一方子全灭判输
c)一方落子时间超过期限判输
d)一方三子连珠判赢
)GameMaster中增加时间限制
)通过MainFrame中的菜单对游戏进行控制