发表回复 
宝石迷阵Bejeweled 1.86自动消除
2014-08-10, 01 : 32
宝石迷阵Bejeweled 1.86自动消除
代码: (全选)
;初始参数
lidmax = 8 ;纵
sidmax = 8 ;横
;相对全屏
CoordMode, pixel, screen
CoordMode, mouse, screen
;格子长宽
xd = 51
yd = 51
Loop
{
;初始参数
sid = 1
lid = 1
;定位
WinActivate, Bejeweled 1.86 ;应用
Loop
{
imagesearch,tmpx,tmpy,0,0,%A_ScreenWidth%,%A_ScreenHeight%, %A_ScriptDir%\0.bmp ;搜图定位
if !errorlevel
    {
    sx := tmpx+51
    sy := tmpy
    Break
    }
}

;循环把n*n的宝石格式化成数字
SetFormat, float, 0.0 ;去掉小数点
Loop
{
if sid > %sidmax%
    {
    lid += 1
    sid = 1
    if lid > %lidmax%
        {
        Break
        }
    }
;定位在中间
tpsx := sx+(sid-0.5)*xd
tpsy := sy+(lid-0.5)*yd
PixelGetColor, tmpcolor, %tpsx%, %tpsy%, ;获取像素的方式 BGR
if tmpcolor = 0x049519
    tpvar = 1
if tmpcolor = 0xA2A2A2
    tpvar = 2
if tmpcolor = 0x5242FD
    tpvar = 3
if tmpcolor = 0xBC00BC
    tpvar = 4
if tmpcolor = 0xB67500
    tpvar = 5
if tmpcolor = 0x0043B3
    tpvar = 6
if tmpcolor = 0x009595
    tpvar = 7
p_%lid%_%sid% = %tpvar% ;保存到动态变量
sid += 1
}

lid = 1
sid = 1
bk = 0 ;中断
Loop, %lidmax%
{
if bk = 1
    Break
;赋值各层级
zl := lid-1
bl := lid+1
cl := lid+2
dl := lid+3
el := lid+4
fl := lid+5
Loop, %sidmax%
{
a := sid-2
b := sid-1
c := sid
d := sid+1
e := sid+2
f := sid+3
if a = -1
    a = 0
;类型1
;0
; 00
tmpvar = % p_%zl%_%b% p_%lid%_%c% p_%lid%_%d% ;串接3个位置的数值
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}") ;正则匹配
if tmpmatch = 1
    {
    px = %b% ;位置id
    py = %lid%
    dir = up ;移动方向
    bk = 1
    Break
    }
;类型2
;0 00
;
tmpvar = % p_%lid%_%a% p_%lid%_%c% p_%lid%_%d%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %a%
    py = %lid%
    dir = right
    bk = 1
    Break
    }
;类型3
; 00
;0
tmpvar = % p_%bl%_%b% p_%lid%_%c% p_%lid%_%d%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %b%
    py = %lid%
    dir = down
    bk = 1
    Break
    }
;类型4
;  0
;00
tmpvar = % p_%zl%_%e% p_%lid%_%c% p_%lid%_%d%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %e%
    py = %lid%
    dir = up
    bk = 1
    Break
    }
;类型5
;00 0
;
tmpvar = % p_%lid%_%f% p_%lid%_%c% p_%lid%_%d%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %f%
    py = %lid%
    dir = left
    bk = 1
    Break
    }
;类型6
;00
;  0
tmpvar = % p_%bl%_%e% p_%lid%_%c% p_%lid%_%d%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %e%
    py = %lid%
    dir = down
    bk = 1
    Break
    }
;类型7
;0 0
; 0
tmpvar = % p_%lid%_%a% p_%zl%_%b% p_%lid%_%c%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %b%
    py = %lid%
    dir = up
    bk = 1
    Break
    }
;类型8
; 0
;0 0
tmpvar = % p_%lid%_%a% p_%bl%_%b% p_%lid%_%c%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %b%
    py = %lid%
    dir = down
    bk = 1
    Break
    }
;以下旋转90度
;类型9
tmpvar = % p_%lid%_%c% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %c%
    py = %lid%
    dir = left
    bk = 1
    Break
    }
;类型10
tmpvar = % p_%zl%_%b% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %b%
    py = %zl%
    dir = down
    bk = 1
    Break
    }
;类型11
tmpvar = % p_%lid%_%a% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %a%
    py = %lid%
    dir = right
    bk = 1
    Break
    }
;类型12
tmpvar = % p_%dl%_%c% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %c%
    py = %dl%
    dir = left
    bk = 1
    Break
    }
;类型13
tmpvar = % p_%el%_%b% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %b%
    py = %el%
    dir = up
    bk = 1
    Break
    }
;类型14
tmpvar = % p_%dl%_%a% p_%bl%_%b% p_%cl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %a%
    py = %dl%
    dir = right
    bk = 1
    Break
    }
;类型15
tmpvar = % p_%lid%_%c% p_%zl%_%b% p_%bl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %c%
    py = %lid%
    dir = left
    bk = 1
    Break
    }
;类型16
tmpvar = % p_%lid%_%a% p_%zl%_%b% p_%bl%_%b%
tmpmatch := RegExMatch(tmpvar,"(\w)\1{2}")
if tmpmatch = 1
    {
    px = %a%
    py = %lid%
    dir = right
    bk = 1
    Break
    }
sid += 1
if sid > %sidmax% ;满了
    {
    sid = 1
    }
}
lid += 1
}
if bk = 1 ;算出移动坐标
    {
    tpsx := sx+(px-1)*xd+xd/2
    tpsy := sy+(py-1)*yd+yd/2
    if dir = left
        {
        tpex := tpsx-xd
        tpey := tpsy ;+yd
        }
    if dir = right
        {
        tpex := tpsx+xd
        tpey := tpsy ;+yd
        }
    if dir = up
        {
        tpex := tpsx ;+xd
        tpey := tpsy-yd
        }
    if dir = down
        {
        tpex := tpsx ;+xd
        tpey := tpsy+yd
        }
    MouseClickDrag, left, %tpsx%, %tpsy%, %tpex%, %tpey%
    MouseMove, %sx%, %sy% ;因为停在宝石上会闪  所以移到顶点
    Sleep, 800 ;循环消除 每次等待800毫秒
    }
}

x::
ExitApp

bolg:thinkai.net 百度知道sunshinezxk 热爱Autohotkey5年。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-08-10, 17 : 08 (这个帖子最后修改于: 2014-08-19 01 : 30 by feiyue.)
RE: 宝石迷阵Bejeweled 1.86自动消除
我发现这个跟我那个“宝石矿——游戏挂机脚本”对应的游戏是一样的,
只要把名字“宝石矿中文版”改为“Bejeweled”就行了,你可以试试那个脚本。
你的脚本变量太多,真难以看懂。不如用中文变量。


 

 
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢feiyue
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合