AHK自动扫雷完整无错版

AHK自动扫雷完整无错版
#w::
run winmine.exe
return
#s::
start:
Process Exist,winmine.exe
pid:=ErrorLevel
If (errorlevel=0)
{
	MsgBox ,64,提示,请先打开扫雷!
	Exit 5
}
WinGet id,id,ahk_pid%pid%
WinActivate ahk_pid%pid%
WinWaitActive ahk_pid%pid%
WinGetPos ,,,wl,hl,ahk_pid%pid%
xn:=Round((wl-30)/16)
yn:=Round((hl-115)/16)
m:=xn*yn
CoordMode pixel,relative
PixelSearch xl1,,9,hl-50,20,hl-50,0x808080
xl1+=3
xl2:=16*xn-1+xl1
PixelSearch ,,yl2,50,hl-9,50,hl-20,0xFFFFFF
yl2-=3
yl1:=yl2-16*yn+1
CoordMode mouse,relative
offcount:=0
loop %yn%
		{
			ifoffy:=A_Index
			Loop %xn%
			{
				noff:=ifnoff(A_index,ifoffy)
				If (noff="off")
				{
					offcount++
				}
			}
		}
	If (offcount =0)
	{
		ControlSend ,,{F2},扫雷
	}
clickstart:
Random nxrandom,1,xn
Random nyrandom,1,yn
nrpx:=xl1+8+16*(nxrandom-1)
nrpy:=yl1+8+16*(nyrandom-1)
ControlClick x%nrpx% y%nrpy%,ahk_pid%pid%,,L,,NA
Search:
done:=0
Loop %yn%
{
	ny:=A_Index
	nvy:=ny
	Loop %xn%
	{
		nvx:=A_Index
		ny:=nvy
		nx:=A_Index
		n%nx%_%ny%:=number(nx,ny)
		n:=n%nx%_%ny%
		nnx:=xl1+8+16*(nx-1)
		nny:=yl1+8+16*(ny-1)
		if n%nx%_%ny% is Number
		{
			on=0
			off=0
			flag=0
			nr=
			nrd=
			nd=
			nld=
			nl=
			nlu=
			nu=
			nru=
			Gosub ntype
		}
	}
}
If (done=1)
Gosub search
Else
{
	offcount:=0
	loop %yn%
		{
			ifoffy:=A_Index
			Loop %xn%
			{
				noff:=ifnoff(A_index,ifoffy)
				If (noff="off")
				{
					offcount++
					offx%offcount%:=A_Index
					offy%offcount%:=ifoffy
				}
			}
		}
	If (offcount =0)
	Exit 8
	Random nrandom,1,offcount
	nrpx:=xl1+8+16*(offx%nrandom%-1)
	nrpy:=yl1+8+16*(offy%nrandom%-1)
	ControlClick x%nrpx% y%nrpy%,ahk_pid%pid%,,L,,NA
	Gosub search
}
Exit 4
ntype:
If (ny=1) and (nx=1)
{
Gosub noLU
Return
}
If (ny=1) and (nx<>1) and (nx<>xn)
{
Gosub noU
Return
}
If (ny=1) and (nx=xn)
{
Gosub noRU
Return
}
If (ny<>1) and (ny<>yn) and (nx=1)
{
Gosub noL
Return
}
If (ny<>1) and (ny<>yn) and (nx<>1) and (nx<>xn)
{
Gosub AS
Return
}
If (ny<>1) and (ny<>yn) and (nx=xn)
{
Gosub noR
Return
}
If (ny=yn) and (nx=1)
{
Gosub noLD
Return
}
If (ny=yn) and (nx<>1) and (nx<>xn)
{
Gosub noD
Return
}
If (ny=yn) and (nx=xn)
{
Gosub noRD
Return
}

Detect:
noLU:
na:=3
nx++
nr:=Status(nx,ny)
ny++
nrd:=Status(nx,ny)
nx--
nd:=Status(nx,ny)
Gosub Do
Return
noU:
na:=5
nx++
nr:=Status(nx,ny)
ny++
nrd:=Status(nx,ny)
nx--
nd:=Status(nx,ny)
nx--
nld:=Status(nx,ny)
ny--
nl:=Status(nx,ny)
Gosub Do
Return
noRU:
na:=3
ny++
nd:=Status(nx,ny)
nx--
nld:=Status(nx,ny)
ny--
nl:=Status(nx,ny)
Gosub Do
Return
noL:
na:=5
nx++
nr:=Status(nx,ny)
ny++
nrd:=Status(nx,ny)
nx--
nd:=Status(nx,ny)
ny-=2
nu:=Status(nx,ny)
nx++
nru:=Status(nx,ny)
Gosub Do
Return
AS:
na:=8
nx++
nr:=Status(nx,ny)
ny++
nrd:=Status(nx,ny)
nx--
nd:=Status(nx,ny)
nx--
nld:=Status(nx,ny)
ny--
nl:=Status(nx,ny)
ny--
nlu:=Status(nx,ny)
nx++
nu:=Status(nx,ny)
nx++
nru:=Status(nx,ny)
Gosub Do
Return
noR:
na:=5
ny++
nd:=Status(nx,ny)
nx--
nld:=Status(nx,ny)
ny--
nl:=Status(nx,ny)
ny--
nlu:=Status(nx,ny)
nx++
nu:=Status(nx,ny)
Gosub Do
Return
noLD:
na:=3
nx++
nr:=Status(nx,ny)
nx--
ny--
nu:=Status(nx,ny)
nx++
nru:=Status(nx,ny)
Gosub Do
Return
noD:
na:=5
nx--
nl:=Status(nx,ny)
ny--
nlu:=Status(nx,ny)
nx++
nu:=Status(nx,ny)
nx++
nru:=Status(nx,ny)
ny++
nr:=Status(nx,ny)
Gosub Do
Return
noRD:
na:=3
nx--
nl:=Status(nx,ny)
ny--
nlu:=Status(nx,ny)
nx++
nu:=Status(nx,ny)
Gosub Do
Return
Status(nx,ny)
{
	global
	px:=xl1+1+16*(nx-1)
	py:=yl1+1+16*(ny-1)
	CoordMode pixel,relative
	PixelGetColor ,color,px,py
	if (color=0xFFFFFF)
	{
		PixelGetColor color1,xl1+7+16*(nx-1),yl1+5+16*(ny-1)
		PixelGetColor color2,xl1+8+16*(nx-1),yl1+11+16*(ny-1)
		If (color1=0x0000FF) and (color2=0x000000)
		{
			flag++
			Return "flag"
		}
		Else
		{
			off++
			off%off%x:=xl1+8+16*(nx-1)
			off%off%y:=yl1+8+16*(ny-1)
			Return "off"
		}
	}
	Else
	{
		on++
		Return "on"
	}
}
Number(nx,ny)
{
global xl1,yl1
py:=yl1+8+16*(ny-1)
px:=xl1+8+16*(nx-1)
CoordMode pixel,relative
PixelGetColor color,px,py
if (color=0xFF0000)
Return 1
if (color=0x008000)
Return 2
if (color=0x0000FF)
Return 3
if (color=0x800000)
Return 4
if (color=0x000080)
Return 5
if (color=0x808000)
Return 6
if (color=0x000000)
{
	PixelGetColor color,px-1,py-1
	if (color=0xFFFFFF)
	{
		PixelGetColor color1,xl1+7+15*(nx-1),yl1+5+15*(ny-1)
		PixelGetColor color2,xl1+8+15*(nx-1),yl1+11+15*(ny-1)
		If (color1=0x0000FF) and (color2=0x000000)
		Return "flag"
		Else
		{
			ControlSend ,,{F2},扫雷
			Gosub search
		}
	}
}
If (color=0xC0C0C0)
{
	PixelGetColor color7,px+1,py+1
	If (color7=0x000000)
	Return 7
}
if (color=0x808080)
Return 8
}
Do:
If (n=na-on) and (flag<>n)
{
	Gosub flag
	done:=1
}

If (n=flag) and (off > 0)
{
	Gosub Dig
	done:=1
}
Return
Dig:
ControlClick x%nnx% y%nny%,ahk_pid%pid%,,M,,NA
Return
Flag:

Loop %off%
{
	flagx:=off%A_Index%x
	flagy:=off%A_Index%y
	ControlClick x%flagx% y%flagy%,ahk_pid%pid%,,R,,NA
}
Return
ifnoff(xn,yn)
{
	global xl1,yl1
	py:=yl1+8+16*(yn-1)
	px:=xl1+8+16*(xn-1)
	CoordMode pixel,relative
	PixelGetColor color,px,py
	if (color=0xC0C0C0)
	{
		PixelGetColor color,px-7,py-7
		If (color=0xFFFFFF)
		Return "off"
	}
}

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他

[破解]吾爱破解工具包2.0,好几个G的好用工具,我也是醉了

2018-1-9 18:47:07

其他

AHK版致爱丽丝

2018-1-9 19:07:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索