Minecraft(我的世界)中文论坛

标题: [1.8][87]简单的扫雷

作者: 捌柒    时间: 2015-2-13 12:34
标题: [1.8][87]简单的扫雷
几天前在群里听说@乙烯_中国 在做扫雷,自己也去试了试,虽然知道老外早就做了一个算法精简的,但是毕竟做作品不是跟老外比,所以还是做了一个精简版的扫雷,原理和老外的相似,但是稍微逊色了一点,因为他的自定义大小很轻松,而我的要手动人



这就是全部的电路大小


由于懒得改材质了,数字就用不同颜色的羊毛代替,从右到左是1-8,红石块是雷
名为1的蛋是相当于扫雷里的左键,2的蛋想到于扫雷里的右键
原理简析:


我的原理和老外的原理最大的不同就是,他的是用方块,我的使用实体,没一个方块吓都有一个ArmorStand,每一个都记为一个单位
面开始讲原理:
1、雷的生成
/spreadplayers+相对坐标
2、雷数
根据原版扫雷规则,一个方块为中心的3x3的范围内的雷总数是这个方块的雷数,那么我们不可能以每个方块检测
方法是什么呢?就是反向检测
假设在坐标系上存在两个半径相同的圆,那么如果圆A的圆心在圆B中,圆B的圆心肯定就会在圆A中
同理,3x3的范围,相当于半径为根号2的圆所能扫到的范围,那么雷所能检测到的方块必然能检测到雷
3、空挡生成


原版扫雷还有一个规则,当你点开一个空白的时候,它会自动显示周围的空白
这个其实很好联想,我们可以用一个游戏:Pop Star(消灭星星)作为例子
Pop Star里同种颜色的方块可以互相消去,那么我们可以理解为“互相链接的同种方块消去”
那么链接的概念是什么呢?
由于方块只有四个边,所以对于方块而言,链接就是有一边重合
mc中,对于一个方块,与它链接的方块就能为r=1扫到(这里”方块“都是”ArmorStand“)
那么只要以所有显示的空白给四周的方块显示就行了
而至于老外的那个扫雷,思路和我的是相同的,只不过他用了fill replace,所以生成会更方便,而且实体多还会卡

@乙烯_中国
[groupid=546]Command Block Logic[/groupid]

2015-02-13_11.58.05.png (100.34 KB, 下载次数: 11)

2015-02-13_11.58.05.png

扫雷.zip

286.21 KB, 下载次数: 28


作者: 乙烯_中国    时间: 2015-2-13 12:38
不错不错,但是不是过于精简了
作者: satgo1546    时间: 2015-2-13 12:42
原版扫雷的中键呢……难道这个键没人知道……
作者: Xhand    时间: 2015-2-13 12:42
容我买套现房压压惊233 什么时候做三维弹球?? XD
作者: ⭐✔️    时间: 2015-2-13 12:44
本帖最后由 贰逼 于 2015-2-14 09:52 编辑

好赞

作者: xiao_zhu_ge    时间: 2015-2-13 12:50
赞一个!!
作者: 捌柒    时间: 2015-2-13 12:52
satgo1546 发表于 2015-2-13 12:42
原版扫雷的中键呢……难道这个键没人知道……

哦槽,我玩了这么多年扫雷从来没发现中键有用
作者: MuuOoO    时间: 2015-2-13 13:01
NB啊!!!
作者: SXL    时间: 2015-2-13 13:10
表示看完这个帖子直接点开始玩了一局扫雷{:10_493:}
作者: 阿散ASun    时间: 2015-2-13 13:12
有没有实现标志完雷后左右键一起点翻开附近方块的功能?
作者: 捌柒    时间: 2015-2-13 13:14
阿散ASun 发表于 2015-2-13 13:12
有没有实现标志完雷后左右键一起点翻开附近方块的功能?

左右键一起点和中键是一样的效果,只不过LZ不怎么玩扫雷,忽略了
作者: chyx    时间: 2015-2-15 01:28
ghyzhi10086 发表于 2015-2-13 12:52
哦槽,我玩了这么多年扫雷从来没发现中键有用

居然连这都不知道
作者: Exteman-莫言    时间: 2015-2-15 03:29
看着好赞+1
作者: Exteman-莫言    时间: 2015-2-15 03:29
能搬运么?
作者: 彪悍的新手    时间: 2015-2-15 22:59
错别字,“每一个方块吓”

作者: C-青皮君    时间: 2015-2-15 23:00
87的帖子被回啦!夭寿啦!