android扫雷需求分析,Android扫雷游戏实现

今天研究了一下扫雷游戏,从网上下了个代码,因为代码中没有注释,为了后面学习的人能够更容易的理解,自己总结了一下大体的思路,希望对你们能够有所帮助。

在此声明:本游戏代码是从网上获得,地址为:http://blog.youkuaiyun.com/yexing/archive/2011/01/14/6139236.aspx,代码下载地址为:http://u.115.com/file/f1e65e86c1 。以下所述只是本人的一些理解,由于水平有限,如果有说的不对的地方,请评判指正……

废话不多说,开始说思路:

根据游戏规则,很显然我们在进行构建游戏界面时是分了两层来画。

一层为地雷层,我们在这层埋放地雷,根据游戏规则,容易知道该层每一个位置可能有以下几种状态:

有地雷:

无地雷,且周围都无地雷:显示空白;

无地雷,周围有地雷:显示周围地雷的个数,因为周围除自身外共8个位置,故可能为1-8的个数。

所以这一层共有10种状态

0b5c28c8a5ba9aec34f2de84c6a6f1dd.png

另一层为覆盖层,表示我们游戏时的扫雷状态,有以下几种:

未扫开:即初始化时的状态,把地雷层覆盖

扫开:即确定的无雷区,能看到该处地雷层状态

标记为地雷:确定该处有雷,标记为一个旗帜

标记为不确定:认为该处可能有雷,标记为一个问号

这几个状态是游戏进行中的状态,此外,在扫雷失败游戏结束时,还有以下两种显示状态:

踩到雷:即翻开了有雷的位置

标记雷错误:标记了无雷的位置

这两种状态我们也放在覆盖层比较合适,所以,覆盖层共有6中状态。

6c94b38143d15d7f457ab2d2a22870a5.png

有了以上的思路,再来实现就很容易了,上面的每一种状态有一张相对应的图片,我们把每一种状态用一个×××数来表示,然后把图片放入到跟该数相对应的下标的数组中。

代码中是直接根据R文件中图片的顺序来定义的常量,如数字12表示地雷 ,图片为i12.png,存放在icon[12]中。

这里我建议定义一些常量来表示,这样可以增加代码的可读性。比如我们定义public static final int POSITION_STATE_MINE = 12;来表示地雷,在进行判断的时候就是if (XXX == POSITION_STATE_MINE)而不是if (XXX == 12),这样在读代码的时候就好理解多了。

差不多,以上就是该游戏的总体设计思想了,具体的实现方法就不多说了,大家自己看代码,大概就是根据屏幕的大小设置地图大小,根据地图大小计算地雷的数量,再把地雷埋到随机的位置;画好地雷层再画覆盖层。

然后就是监听屏幕点击事件了,根据点击的坐标定位到相应的位置,然后根据地雷层和覆盖层的状态进行处理……

Over………

安卓 扫雷源码 添加重新开始按钮支持 Android studio ====================================== Risky Project Location: ----------------------- The tools *should* handle project locations in any directory. However, due to bugs, placing projects in directories containing spaces in the path, or characters like ", ' and &, have had issues. We're working to eliminate these bugs, but to save yourself headaches you may want to move your project to a location where this is not a problem. D:\Program Files\android_s_workplace\terrysaolei - Ignored Files: -------------- The following files were *not* copied into the new Gradle project; you should evaluate whether these are still needed in your project and if so manually move them: * ic_launcher-web.png * proguard-project.txt Moved Files: ------------ Android Gradle projects use a different directory structure than ADT Eclipse projects. Here's how the projects were restructured: * AndroidManifest.xml => app\src\main\AndroidManifest.xml * assets\ => app\src\main\assets * res\ => app\src\main\res\ * src\ => app\src\main\java\ Next Steps: ----------- You can now build the project. The Gradle project needs network connectivity to download dependencies. Bugs: ----- If for some reason your project does not build, and you determine that it is due to a bug or limitation of the Eclipse to Gradle importer, please file a bug at http://b.android.com with category Component-Tools. (This import summary is for your information only, and can be deleted after import once you are satisfied with the results.)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值