用户帮助信息;退出游戏。在联网对局前,XMPP连接设置必须是已经配置好的,否则无法连接jabber服务器,不能进入对局界面。
游戏主要的输入输出及模块间的调用情况用IPO图表示如图2-2:
图2-2 Chess IPO图
2.2 设计实现
2.2.1 设计思想
按照程序运行的顺序介绍各个类的作用以及整体的运行框架,步骤如下:启动游戏,首先被创建的是ChessActivity,而在ChessActivity中首先将用户显示成欢迎界面MyWelcomeView.
在显示欢迎界面的同时,启动MyWelcomeViewThread线程生成界面动画,当玩家单击"菜单"按钮时进入界面MyMenuView,在菜单界面会根据玩家不同的选择执行不同的操作。
当玩家单击"帮助"菜单时,将进入帮助界面MyHelpView.而当玩家单击"开始游戏"菜单按钮时,进入的将是游戏界面MyGameView。当玩家或者电脑走棋是,会根据规则类MyGuiZe进行判断,然后产生一个走法ChessMove。
在游戏过程中,玩家同样可以随时单击"退出"按钮来返回到菜单界面。
2.2.2 具体实现
Android程序=Activity+
xml(view、surfaceview)+res+string.xml
Activity的实现类Chess,该类是通过扩展基类Activity得到的,是整个游戏的控制器,也是整个游戏程序的入口。
辅助界面相关类
欢迎界面类MyWelcomeView,类为游戏欢迎界面的实现类,主要负责欢迎界面的绘制工作,迎界面动画生成类MyWelcomeViewThread,为了欢迎界面服务的,主要是通过更改欢迎界面中图片的坐标来实现动画效果。
帮助界面类MyHelpView,类为帮助界面的实现类。
菜单界面类MyMenuView,类为菜单界面的实现类,负责绘制菜单界面以及菜单界面的屏幕进行监听。
游戏界面相关类
1)游戏界面类MyGameView
该类为游戏程序中最主要的类,负责绘制游戏过程所有的信息,如棋盘、棋子、各个按钮以及胜利或者失败菜单等。
2)象棋规则类MyGuiZe
类是象棋规则的实现类,其中包含所有棋子的走棋规则及当前棋牌某方的所有可能的走法
3)走法类MyChessMove
类为棋子的走法的封装类,包含棋子的名称、出发点以及目标点。
*帅和士的走法:
"帅",它只能在"九宫"中行走,而且每次只能横着或者纵着行走一棋点。首先,判断棋子是否是在"九宫"里行走,接着判断棋子是否是横向或纵向只走一个棋点。如果棋子将符合以上的走棋规则,则可以走动,否则棋子强制放回原处。
"士",它只能在"九宫"中行走,而且每次只能斜着行走一格。这样只有一种情况来考虑,即纵向走一个棋点,横向走一个棋点。如果棋子士符合以上的走棋规则,则可以走动,否则棋子强制放回原处。
如图2-3所示
图2-3
*象和马的走法:
"象",它只能走"田"字格,而且不能过河,象腿不能被其它的棋子压到。首先首先判断棋子是否出届,这样只有一种情况考虑,那就是纵向走两个棋点,横向也走两个棋点。首先判断棋子是否走"田"字格,而且不能过河,接着再用判断象腿是否被其它棋子压着。如果棋子象走动符合以上的走棋规则,则可以走动,否则棋子强制放回原处。
"马",它只能走"日"字格,而且马腿不能被其它的棋子压到。设计时可两种情况来考虑,一种是横向走两个棋点,纵向走一个棋点;一种是纵向走两个棋点,横向走一个棋点。判断是否横向走两个棋点,纵向走一个棋点,接着来判断马腿是否被其它棋子压着。纵向走"日"同理。如果棋子马符合以上的走棋规则,则可以走动,否则棋子强制放回原处。
如图2-4所示
图2-4
*卒和炮的走法:
"卒",它的行走规则分两种情况。一种是棋子没过河界,另一种是棋子过了河界。首先判断棋子是否出届,然后设定棋子没过河界,接着设定棋子在没过河界的情况下只能向前行走一个棋点