JAVA模块游戏规则和界面设计(1)
本模块为游戏规则和界面设计,计划于2005.3.9完成。目前进展顺利,预计将提前一天完成。
本模块分两部分:
1)界面设计。准备需要的图片文件等;设计图形界面;该部分设计已完成,耗费时间两天。主要类:
mainframe:游戏窗口,初步定为游戏本身,将拥有三个逻辑成员:
ui:游戏界面,只负责显示;(完成)
gamemaster:游戏管理者,负责游戏秩序,监控玩家行为及修改游戏状态。
stateobserver:游戏状态观察者,观察游戏状态并在ui上显示。(完成)
2)游戏规则设计。设计游戏规则及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
gamestate.addstep(current,decision);
gamestate.nextplayer();
while(!gamestate.ishumanturn()) {
decision = gamestate.getnextstep(current);
status = checkstep(current);
//假如需要辅助输入,因为ai在计算current时必定已考虑好如何输入
handle(decision);
gamestate.addstep(current,decision);
gamestate.nextplayer();
}
//开启chessgrid监控,准备接受人类输入
}
gamestate:为被观察者。拥有两个chessplayer,nextplayer()中,首先notifyobserver()修改状态,然后指向下一个chessplayer。在
getnextstep()中,调用当前chessplayer提供的getnextstep()方法,获取ai计算结果。
stateobserver:为观察者。观察gamestate的状态并做出相应修改。
目前剩余的任务有:
1)gamemaster中需要判断游戏结束。游戏结束条件将在下列条件中选择:
a)无法继续落子判和
b)一方子全灭判输
c)一方落子时间超过期限判输
d)一方三子连珠判赢
2)gamemaster中增加时间限制。
3)通过mainframe中的菜单对游戏进行控制。[来源 www.iocblog.net]
Tag: 游戏
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。