中国象棋

成员信息

孟印真17343087
莫晓权17343088
梅诗博17343086
刘任浩天17343078

简介

现代大学生每天工作学习很辛苦,需要一款益智小游戏放松一下。于是我们团队开发了中国象棋供大家休闲。

开发环境

  • 操作系统:Windows
  • IDE:Android Studio

成员分工

梅诗博17343086: 游戏逻辑 GameLogic实现
莫晓权17343088:GameBoardView的自定义view,webview实现
刘任浩天17343078:splash界面,游戏主体界面
孟印真17343087:设置界面activity,fragment实现

项目信息

项目结构:activity->项目的五个活动界面
report

开启app时加载本地缓存的splashactivity
report
游戏界面:mainActivity
report
设置界面,settingActivity(加载了settingFragment之后的)

report

设置界面弹出框(非activity)

report

关于信息,aboutActivity
report

关于界面的跳转,webviewActivity

report

fragment目录主要是前面设置界面的内容

view目录,GameBoardView是自定义的游戏view

game目录是游戏逻辑处理,游戏配置

xqwlight是游戏内容,例如象棋状态,每个子位置的记录。包含第三方的象棋AI算法。

项目使用的库:

butterKnife:ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。

utilCode:utilCode是一个小众的第三方库,其中封装了activity的一些常见api,例如startActivity。SpUtils封装了Sp的存取操作,可以让项目开发变快,节约一些重复开发的工作。

首先是GameBoardView的自定义:

首先重写了onMeasure过程:根据配置信息,做到动态的改变棋盘格子的宽高
report

接着重写了onTouchEvent方法:做到检测按压抬起手势时候记录点击位置,根据两次点击位置进行逻辑处理。例如棋子的移动,无效移动等。具体逻辑交由GameLogic类来实现。

report

同时,封装了一些绘制选中特性的方法(drawSelect):

report

游戏逻辑类(GameLogic):

​ GameLogic在每一次棋局开始是更新设置信息,例如游戏难度,是否让子,开始移动的顺序等。

​ 根据本地缓存的信息判断是否加载上次棋局或者开始新棋局->维护一个多维数组,记录棋子状态->根据view传进的棋子移动信息判断->是否有效移动->是否吃掉棋子,移除相关棋子信息->是否吃掉将帅,结束游戏

​ 如果是AI移动,则取消判断,直接更新UI

​ 同时,支持悔棋操作将棋局状态回退一步。重开操作,清空现有状态。

AI算法类(第三方):

​ 传入其制定的记录棋局状态的数据结构,返回下一步状态(即AI的移动操作)。这是一个异步请求,获得返回值之前,mainActivity界面中央出现加载的动画。

设置类:

​ 在设置界面更新设置后,通知SP进行更新操作。

WebView类:

​ 界面上方包含进度条,主题即web界面
​ webview的一些配置代码如图
report

相关文章: