#####周末闲来没事, 以自定义控件的方式写了一象棋游戏, 实现了象棋基本走子吃子规则, 红黑双方轮流走棋. 先贴上apk下载地址, 感兴趣的可以下载下来玩玩(虽然不能一个人玩[滑稽])
github项目地址: https://github.com/EshelGuo/Chess
先贴一运行效果图(棋子棋盘图素在百度上找的, 所以不是很清晰):
实际上写这个象棋也就是写来玩玩, 但既然写到博客上那就不能随便贴个图贴个代码草草了事, 我就大致说下我的基本思路.
最初的设想其实很简单, 就是继承View通过 canvas.drawBitmap
这个api 分别将棋盘棋子画到画布上, 通过计算棋盘边界宽度和格子宽度, 来将Android中的坐标(左上为0,0)转化为象棋中的坐标(左下为0,0 x轴1到9, y轴1到10)来计算走子吃子, 反过来转换来进行绘制.
上图是整个象棋游戏的结构 ChessView即整个象棋游戏的自定义控件, 枚举类Color来代表红黑阵营,Type来代表 车马炮 等棋子种类 Pieces 则代表棋子 Location类来将棋子坐标和像素点坐标进行互相转换, PiecesFactory 用来初始化开局游戏棋子位置, Style类用来控制棋子棋盘样式, ResCache则对Bitmap进行了缓存, Rule类用与控制能否吃子走子逻辑以及一些样式配置, Game类代表一盘游戏, 并担当了ChessView与Rule调用的桥梁, Game类负责容纳32个棋子以及3个空位置(空位置用来标志上次走动的轨迹), Rule类种通过切换阵营来实现红黑双方轮流走子.
感兴趣的可以到github把代码拉下来看看