中国象棋
成员信息
孟印真17343087
莫晓权17343088
梅诗博17343086
刘任浩天17343078
简介
现代大学生每天工作学习很辛苦,需要一款益智小游戏放松一下。于是我们团队开发了中国象棋供大家休闲。
开发环境
- 操作系统:Windows
- IDE:Android Studio
成员分工
梅诗博17343086: 游戏逻辑 GameLogic实现
莫晓权17343088:GameBoardView的自定义view,webview实现
刘任浩天17343078:splash界面,游戏主体界面
孟印真17343087:设置界面activity,fragment实现
项目信息
项目结构:activity->项目的五个活动界面
开启app时加载本地缓存的splashactivity
游戏界面:mainActivity
设置界面,settingActivity(加载了settingFragment之后的)
设置界面弹出框(非activity)
关于信息,aboutActivity
关于界面的跳转,webviewActivity
fragment目录主要是前面设置界面的内容
view目录,GameBoardView是自定义的游戏view
game目录是游戏逻辑处理,游戏配置
xqwlight是游戏内容,例如象棋状态,每个子位置的记录。包含第三方的象棋AI算法。
项目使用的库:
butterKnife:ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。
utilCode:utilCode是一个小众的第三方库,其中封装了activity的一些常见api,例如startActivity。SpUtils封装了Sp的存取操作,可以让项目开发变快,节约一些重复开发的工作。
首先是GameBoardView的自定义:
首先重写了onMeasure过程:根据配置信息,做到动态的改变棋盘格子的宽高
接着重写了onTouchEvent方法:做到检测按压抬起手势时候记录点击位置,根据两次点击位置进行逻辑处理。例如棋子的移动,无效移动等。具体逻辑交由GameLogic类来实现。
同时,封装了一些绘制选中特性的方法(drawSelect):
游戏逻辑类(GameLogic):
GameLogic在每一次棋局开始是更新设置信息,例如游戏难度,是否让子,开始移动的顺序等。
根据本地缓存的信息判断是否加载上次棋局或者开始新棋局->维护一个多维数组,记录棋子状态->根据view传进的棋子移动信息判断->是否有效移动->是否吃掉棋子,移除相关棋子信息->是否吃掉将帅,结束游戏
如果是AI移动,则取消判断,直接更新UI
同时,支持悔棋操作将棋局状态回退一步。重开操作,清空现有状态。
AI算法类(第三方):
传入其制定的记录棋局状态的数据结构,返回下一步状态(即AI的移动操作)。这是一个异步请求,获得返回值之前,mainActivity界面中央出现加载的动画。
设置类:
在设置界面更新设置后,通知SP进行更新操作。
WebView类:
界面上方包含进度条,主题即web界面
webview的一些配置代码如图