anian 发表于 2009-7-21 23:03:17

介绍 SokoFind 【2014年更新:v2.0.2中文版发布】

本帖最后由 sokoban 于 2014-2-5 13:01 编辑

SokoFind是Sokoban兄和我写的一个关卡搜查程序。
得到Sokoban兄的鼎力支持和帮忙, SokoFind才可以面世。
在此感谢Sokoban兄。

最新版本下载地址:
http://sokoban.ws/utility/sokofind.php


目前只有英文版本, 将来或者会出中文版本。

用法:

1。  输入关卡图案到“XSB Pattern”窗口。
2。  选择搜查路径。
3。  选择比较百分率; 默认100%。
4。  点击“Begin Search”开始搜查。结果会出现在“Output”窗口。

注: 在(1)提到的“关卡图案”不需要是正规的关卡。
          (如: 关卡图案可以没有‘人’或‘箱子’。)
          但一定是要XSB格式。

XSB Pattern 例子:
##########
##---#--##
##...$$-##
##...#---#
##...#$--#
##...#---#
######---#
#----#---#
#----#---#
#----#---#
##########



HHHHHHHHHH
HH___H__HH
HH...$$_HH
HH...H___H
HH...H$__H
HH...H___H
HHHHHH___H
H____H___H
H____H___H
H____H___H
HHHHHHHHHH



----#####
----#--@#
###-#$$-#
#.#-#-$-#
#.###-###
#.----##-
#--#---#-
####---#-
---#####-



____HHHHH
____H__aH
HHH_H$$_H
H.H_H_$_H
H.HHH_HHH
H.____HH_
H__H___H_
HHHH___H_
___HHHHH_




HHHHHHHHHHHHHHHHHHH
H_________________H
H_**_**_****_****_H
H_*****_*a___*__*_H
H_*_*_*_***__****_H
H_*___*_*____*__*_H
H_*___*_*____****_H
H_________________H
HHHHHHHHHHHHHHHHHHH





[ 本帖最后由 anian 于 2009-10-28 11:52 编辑 ]

[ 本帖最后由 sokoban 于 2011-11-8 10:42 编辑 ]

小孩儿 发表于 2009-7-21 23:04:24

这个是推箱子么?不懂的路过~~~

sokoban 发表于 2009-7-22 09:06:01

这个程序的核心算法是 anian 兄完成的,所有旋转和翻转都会比较,还能随意设置匹配比例,基本上没有漏网之鱼了。我只是写了一些 Windows 界面的代码。

[ 本帖最后由 sokoban 于 2009-7-22 09:07 编辑 ]

jinyou 发表于 2009-7-22 09:53:54

再问,八个方向比较,每个方向要进行各种覆盖程度的许多次比较,最后取最大相似值吗?
所以关卡大小(长,宽)有些出入,也没有关系吗。

现在程序的用途是某人要从看到的某一图案到题库去找题目。
那么比对这一图案的一个局部也就可以了。
再进一步,我只要输入图案中某一行中的一段,进行字符串包含查找,就应该能找了,当然只输一行只要找4个方向。最后得出有限的一个列表,可以由人再去筛选。我目前是这样做的。当然我选择的图案中某一行中的一段,是我觉的比较有特点的内容,有时也要试几次。

另一种要求,就是在一万题规模的题库中自动寻找哪几关相似的问题。
我目前是整行及整列比较,也就是说如果题目行列都发生变化的情况,我就找不到了。这样也能找到不少相似的题目。当然看看题目中的说明,那才是最容易明白来源的方法。

sokoban 发表于 2009-7-22 10:49:08

SokoFind 对每个方向,会多次比较(从左上角比到右下角),所以大小没有关系。把待找关卡最有特征的局部拿来做搜索亦可。

[ 本帖最后由 sokoban 于 2009-7-22 23:01 编辑 ]

anian 发表于 2009-7-23 02:50:16

原帖由 jinyou 于 2009-7-22 09:53 发表 http://bbs.mf8-china.com/images/common/back.gif
再问,八个方向比较,每个方向要进行各种覆盖程度的许多次比较,最后取最大相似值吗?
所以关卡大小(长,宽)有些出入,也没有关系吗。


SokoFind 是每个关卡八个方向都进行比较, 当找到一个方向达到用者的要求(百分率) 时就会停止其它方向的比较。
虽然再比较其它的方向可能会得到更高的百分率 -- 个人觉得没有必要。
再者, 除非关卡特殊和百分率非常低(或者pattern非常小) 关卡不会有两个方向都达到百分率要求。

如Sokoban兄所说, 关卡大小有些出入不成问题。

[ 本帖最后由 anian 于 2009-7-23 03:13 编辑 ]

jinyou 发表于 2009-7-23 10:32:18

我的意思程序首先判断是完整XSB,做规格化等...,如果只输入关卡的局部,就可以进行直接比较.而现在不行.

一般应该按照相似率排序.所以有必要得到更高的百分率.

anian 发表于 2009-7-23 12:21:13

原帖由 jinyou 于 2009-7-23 10:32 发表 http://bbs.mf8-china.com/images/common/back.gif
我的意思程序首先判断是完整XSB,做规格化等...,如果只输入关卡的局部,就可以进行直接比较.而现在不行.


为什么不行?  
SokoFind之所以开发的主要原因就是其它的关卡搜查程序不能输入关卡的局部。
SokoFind是可以用关卡的局部来搜查。
也是这个原因, 我才叫它做“XSB Pattern” 而不是 “XSB Level”。

但是有一点我没有说明白, 那就是“XSB Pattern”的格式。

为了方便输入关卡的局部和空位, “XSB Pattern”的格式是需要在“关卡的局部”加一个方形外墙。

列子:

如果想便输入关卡的局部是:

-------#-$#
-------#.-#
########-$#
.-.-.-.#.-#
-$-$-$---$#
########--#
-------####


那就要加一个方形外墙, 变成了:
#############
#-------#-$##
#-------#.-##
#########-$##
#.-.-.-.#.-##
#-$-$-$---$##
#########--##
#-------#####
#############

SokoFind在阅读XSB Pattern后会去除方形外墙。
还有一点, XSB Pattern是没有做规格化的。   只有那些进行搜查的关卡才做规格化然后再比较。







[ 本帖最后由 anian 于 2009-10-28 12:00 编辑 ]

jinyou 发表于 2009-7-23 13:41:05

那些进行搜查的关卡,基本上不再改变,是否先做好规格化加以保存,空间换时间。
你的程序在读入XSB Pattern后,检测到不能规格化的就是局部,就自动加方形外墙,而不该要求输入者加。除非你的编辑框能提供列编辑模式。

另问搜查路径中支持哪些文件格式,是否包含子文件夹。

[ 本帖最后由 jinyou 于 2009-7-23 13:42 编辑 ]

sokoban 发表于 2009-7-23 15:47:14

我来回答一下第二个问题。第一个留给 anian 兄了 :lol

在设定的路径之下(包括子文件夹),所有扩展名为 TXT、XSB 和 SOK 的推箱子关卡文件都会逐一检查。所以支持多种扩展名,本质上都是一种格式:xsb格式。
页: [1] 2 3 4
查看完整版本: 介绍 SokoFind 【2014年更新:v2.0.2中文版发布】