Android扫雷游戏实现
2011-03-16 16:00
666 查看
今天研究了一下扫雷游戏,从网上下了个代码,因为代码中没有注释,为了后面学习的人能够更容易的理解,自己总结了一下大体的思路,希望对你们能够有所帮助。
在此声明:本游戏代码是从网上获得,地址为:http://blog.csdn.net/yexing/archive/2011/01/14/6139236.aspx,代码下载地址为:http://u.115.com/file/f1e65e86c1 。以下所述只是本人的一些理解,由于水平有限,如果有说的不对的地方,请评判指正……
废话不多说,开始说思路:
根据游戏规则,很显然我们在进行构建游戏界面时是分了两层来画。
一层为地雷层,我们在这层埋放地雷,根据游戏规则,容易知道该层每一个位置可能有以下几种状态:
有地雷:
无地雷,且周围都无地雷:显示空白;
无地雷,周围有地雷:显示周围地雷的个数,因为周围除自身外共8个位置,故可能为1-8的个数。
所以这一层共有10种状态
另一层为覆盖层,表示我们游戏时的扫雷状态,有以下几种:
未扫开:即初始化时的状态,把地雷层覆盖
扫开:即确定的无雷区,能看到该处地雷层状态
标记为地雷:确定该处有雷,标记为一个旗帜
标记为不确定:认为该处可能有雷,标记为一个问号
这几个状态是游戏进行中的状态,此外,在扫雷失败游戏结束时,还有以下两种显示状态:
踩到雷:即翻开了有雷的位置
标记雷错误:标记了无雷的位置
这两种状态我们也放在覆盖层比较合适,所以,覆盖层共有6中状态。
有了以上的思路,再来实现就很容易了,上面的每一种状态有一张相对应的图片,我们把每一种状态用一个整形数来表示,然后把图片放入到跟该数相对应的下标的数组中。
代码中是直接根据R文件中图片的顺序来定义的常量,如数字12表示地雷 ,图片为i12.png,存放在icon[12]中。
这里我建议定义一些常量来表示,这样可以增加代码的可读性。比如我们定义public static final int POSITION_STATE_MINE = 12;来表示地雷,在进行判断的时候就是if (XXX == POSITION_STATE_MINE)而不是if (XXX == 12),这样在读代码的时候就好理解多了。
差不多,以上就是该游戏的总体设计思想了,具体的实现方法就不多说了,大家自己看代码,大概就是根据屏幕的大小设置地图大小,根据地图大小计算地雷的数量,再把地雷埋到随机的位置;画好地雷层再画覆盖层。
然后就是监听屏幕点击事件了,根据点击的坐标定位到相应的位置,然后根据地雷层和覆盖层的状态进行处理……
Over………
本文出自 “Kofi” 博客,请务必保留此出处http://kofi1122.blog.51cto.com/2815761/516884
在此声明:本游戏代码是从网上获得,地址为:http://blog.csdn.net/yexing/archive/2011/01/14/6139236.aspx,代码下载地址为:http://u.115.com/file/f1e65e86c1 。以下所述只是本人的一些理解,由于水平有限,如果有说的不对的地方,请评判指正……
废话不多说,开始说思路:
根据游戏规则,很显然我们在进行构建游戏界面时是分了两层来画。
一层为地雷层,我们在这层埋放地雷,根据游戏规则,容易知道该层每一个位置可能有以下几种状态:
有地雷:
无地雷,且周围都无地雷:显示空白;
无地雷,周围有地雷:显示周围地雷的个数,因为周围除自身外共8个位置,故可能为1-8的个数。
所以这一层共有10种状态
另一层为覆盖层,表示我们游戏时的扫雷状态,有以下几种:
未扫开:即初始化时的状态,把地雷层覆盖
扫开:即确定的无雷区,能看到该处地雷层状态
标记为地雷:确定该处有雷,标记为一个旗帜
标记为不确定:认为该处可能有雷,标记为一个问号
这几个状态是游戏进行中的状态,此外,在扫雷失败游戏结束时,还有以下两种显示状态:
踩到雷:即翻开了有雷的位置
标记雷错误:标记了无雷的位置
这两种状态我们也放在覆盖层比较合适,所以,覆盖层共有6中状态。
有了以上的思路,再来实现就很容易了,上面的每一种状态有一张相对应的图片,我们把每一种状态用一个整形数来表示,然后把图片放入到跟该数相对应的下标的数组中。
代码中是直接根据R文件中图片的顺序来定义的常量,如数字12表示地雷 ,图片为i12.png,存放在icon[12]中。
这里我建议定义一些常量来表示,这样可以增加代码的可读性。比如我们定义public static final int POSITION_STATE_MINE = 12;来表示地雷,在进行判断的时候就是if (XXX == POSITION_STATE_MINE)而不是if (XXX == 12),这样在读代码的时候就好理解多了。
差不多,以上就是该游戏的总体设计思想了,具体的实现方法就不多说了,大家自己看代码,大概就是根据屏幕的大小设置地图大小,根据地图大小计算地雷的数量,再把地雷埋到随机的位置;画好地雷层再画覆盖层。
然后就是监听屏幕点击事件了,根据点击的坐标定位到相应的位置,然后根据地雷层和覆盖层的状态进行处理……
Over………
本文出自 “Kofi” 博客,请务必保留此出处http://kofi1122.blog.51cto.com/2815761/516884
相关文章推荐
- Android游戏开发教程之十五:如何实现异步音乐播放
- Android游戏开发之小球重力感应实现(二十五)
- cocos2dx + android点击返回键两下退出游戏实现
- 【Android游戏开发二十二】(图文详解)游戏中灵活实现动画播放!简述J2me的游戏类库与Android游戏开发!
- android游戏教程:实现触屏控制和虚拟按键
- j2me 实现的扫雷游戏
- Android游戏开发2种FPS 实现比较
- Android SurfaceView实现游戏2048[三]
- C语言编程实现扫雷游戏
- [GitHub开源]Android自定义View实现微信打飞机游戏
- C语言二维数组实现扫雷游戏
- android游戏开发框架libgdx的使用(二十三)—使用Universal Tween Engine实现动画效果
- 【Android游戏开发二十二】(图文详解)游戏中灵活实现动画播放!简述J2me的游戏类库与Android游戏开发!
- Android使用Handler实现打地鼠游戏
- opencv裁剪移并植到android实现游戏中的数字识别
- Android游戏开发之检测游戏碰撞的原理实现(四)
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)
- 扫雷游戏的实现C++
- android实现QQ游戏大厅一样的启动第三方APP
- Android实战打飞机游戏之实现主角以及主角相关元素(3)