智能车制作

标题: 【探讨贴】关于扫雷如何打开一片空白? [打印本页]

作者: Quixote    时间: 2014-9-21 21:34
标题: 【探讨贴】关于扫雷如何打开一片空白?
本帖最后由 Quixote 于 2014-9-21 21:35 编辑

前段时间,我开源了一份我以前写的扫雷代码,但是有一个问题没解决,就是点击到空白,没有打开一片。问:点击到空白,如何打开一片?
就像玩游戏时候,点到了空白(假若是0)
1  1  1  1  1  1
1  1  0  0  1  1
1  1  0  0  0  1
1  1  0  0  1  1
1  1  1  1  1  1
假若点击到一个0,怎么用最快的方法确定附近的0,并且将他们全体标记出来为一个整体。
我曾经想过用八叉树,但迭代让我感觉到可怕。
而且最后对数据的整体描述,至今也没有一个好的思路。

各位有啥看法?
作者: 麦籽小立    时间: 2014-9-21 21:46

作者: 灰原哥哥    时间: 2014-9-21 22:18
洪水算法
作者: zhou1994    时间: 2014-9-21 22:41
从点击的那个往周围找呗。很快就查完了吧
作者: ~狂拽小棋~/衰    时间: 2014-9-22 08:35
楼主的这个雷一般人扫不出来吧,一个1附近竟然有5个雷!!!!!!!!!!!!
作者: Quixote    时间: 2014-9-22 10:41
~狂拽小棋~/衰 发表于 2014-9-22 08:35
楼主的这个雷一般人扫不出来吧,一个1附近竟然有5个雷!!!!!!!!!!!!

只是举例……………………

作者: zfenggo    时间: 2014-9-22 17:08

作者: Quixote    时间: 2014-9-23 13:15
灰原哥哥 发表于 2014-9-21 22:18
洪水算法

百度了下、、不知道是具体哪种……

作者: 灰原哥哥    时间: 2014-9-23 18:45
Quixote 发表于 2014-9-23 13:15
百度了下、、不知道是具体哪种……

这个很简单的啦

作者: Quixote    时间: 2014-9-23 23:20
灰原哥哥 发表于 2014-9-23 18:45
这个很简单的啦

详细说下啦

作者: 灰原哥哥    时间: 2014-9-24 11:36
本帖最后由 灰原哥哥 于 2014-9-24 11:37 编辑

function scan()
for each pixel {
  if (pixel.number==0 && pixel.surround_open())
    pixel.open();
  if (!pixel.mine() && pixel.surround_open_and_zero())
    pixel.open();
}function main () {
do {
  scan()
} while (changed());
}





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2