您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: