游戏《扫雷》开发 用最笨的办法去开发 让每个人都能够明白原理 附赠源码g

本文详细介绍了一款简单扫雷游戏的开发过程,包括构建游戏框架、随机生成地雷、初始化雷区数字等关键步骤,并提供了避免死循环的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扫雷开发步骤
本节主要介绍扫雷游戏的开发 ,本扫雷游戏为简单的扫雷游戏 默认为9*9方格 中有10个地雷 
游戏规则估计大家都应该懂 我这里 不再介绍 
步骤1.构建游戏框架  即 建立9*9的方格 
使用for循环  注意 :要使用TableRow.LayoutParams为for循环里面的Button设置width和height
演示代码 
TableRow.LayoutParams layoutParams=new TableRow.LayoutParams(landmineWidth,130);
button[i][j].setLayoutParams(layoutParams);

步骤2.随机生成10个雷  判断该坐标是否有雷  初始化之前设置全部为没有雷 
演示主要代码:
Random random=new Random();
for (int i = 0; i <landminenumber; i++) {
int x=random.nextInt(8);//作为x坐标
int y=random.nextInt(8);//作为y坐标
Log.i("Tag",x+","+y);
//判断是否有地雷 
if(landmine[x][y].isLandmine!=true){
landmine[x][y].isLandmine=true;
landmine[x][y].setText("*");
}else{
i--;
}
}

步骤3.初始化雷旁边的数字  这个是该游戏的核心算法 此处在生成地雷以及初始化地雷旁边的数字 我使用的是一个障眼法。即先设置字体颜色跟Button背景颜色相同,当点击的时候,在设置其字体颜色为黑色 这样就以为是真的在上面覆盖了一层。
设置字体颜色为0xD3D3D3 就可以与Button背景颜色相同了
最简单的也是最笨的办法 用到的是九宫格递推法 下面简要说明步骤
x-1,y-1 x-1,y x-1,y+1
x,y-1 x,y x,y+1
x+1,y-1 x+1,y x+1,y+1


实例坐标
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)




在9*9的方格中 ,判断该坐标是否有地雷,我们就先从特殊在推到普通
1.先判断四个顶点坐标  分别是(左上,左下,右上,右下) 即如下坐标(0,0)(8,0)(0,8)(8,8)而且只用判断三次就行了  
即以他为中心的三个坐标点。不理解的可以自己思考 假如以(0,0)为中心 只用判断(0,1)(1,0)(1,1)三点坐标是否有地雷就行了
2.在判断四边坐标点上是否有地雷  分别是(最上一行,最下一行,最左一列,最右一列).可以参照判断顶点坐标的方式进行判断 这里不再详细讲述
3.剩余的就是普通的了 就可以只用判断以自己为中心,周围八个点的坐标了。




步骤4:在生成地雷的时候设置相应的点击事件 以及长按事件  
一.在点击事件里面  核心就是在没有地雷的地区进行推到显示  即 点击的是没有地雷 如果不是数字即为空白 则连片显示只要是都不为数字的空白 
点击事件的编写也是按照从特殊到一般的顺序 下面我来简单介绍下 
1.先判断点击的是地雷  直接终止游戏 然后初始化 
2.如果点击的不是地雷  在判断他的Text文字是否为空白
如果是空白 依次查看其上下左右的坐标是否为空白 若为空白 依次打开 所用到的方法与计算地雷周围数量的方法相同  同样是从一般到特殊进行判断
这里 不再详细叙述。我在做代码编写的时候,有一处地方困扰了我很久,就是如何不让判断进入死循环。因为你在做周围是否有地雷的判断时,如果旁边
没有地雷,这是你还要再进行九宫格判断。这样就容易进入一个死循环 。我琢磨了一个 下午,用尽各种办法,才能跟直白的让大家看的明白。第二天无意间我
恍然大悟。我用的是一个做判断  一个用boolean型做标记。 如果是空白 说明他上面的text文字为null 这样判断就解决了。在定义个boolean型变量,先初始化为flass 
即没有标记一个空白区域 。当遇到一个空白区域时,就让他为true.这样就顺利解决了进入死循环的问题。顿时有柳暗花明又一村的感觉。


二、长按事件的编写。同样 ,定义一个数字,用来保存长按的是什么 长按一下 是标记地雷 长按第二次是标记问号 长按第三下为什么也不标记 

三、最后判断游戏是否赢 判断很简单  只要界面上没有雷 就可以了 即Button的getText全部为L


最后这是游戏源码 有需要的可以下载看看 我备注的都很详细 用最笨的办法去开发的 没有用太多的技术。


扫雷源码   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值