程式如何撰寫卡關
Moderators: tmplinshi, arcticir
-
- Posts: 7
- Joined: 01 Apr 2023, 09:19
程式如何撰寫卡關
目前遇到偵測圖片時,可能會跳出重複的,位置會固定,由上而下顯示,可能會有3~5個(a.b.c.d.e圖),請問要如何分別進行點擊,從下而上呢?
Re: 程式如何撰寫卡關
比如
else if FoundX || FoundY
Code: Select all
^s::
{
CoordMode "Pixel"
if ImageSearch(&FoundX, &FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, ".\1.png") {
msgbox "X" FoundX " Y" FoundY
if ImageSearch(&FoundX2, &FoundY2, 0, FoundY+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
msgbox "X" FoundX2 " Y" FoundY2
}
}
if FoundX2 || FoundY2請問要如何分別進行點擊,從下而上呢?
else if FoundX || FoundY
-
- Posts: 7
- Joined: 01 Apr 2023, 09:19
Re: 程式如何撰寫卡關
謝謝,所以是有找到才會點擊,沒找到就不會點擊,是吧!不好意思,我邏輯不太好……
Re: 程式如何撰寫卡關
是的
Code: Select all
#Requires AutoHotkey v2.0.2
F1::
{
FoundX:="",FoundX2:="",FoundX3:="",FoundX4:="",FoundX5:=""
FoundY:="",FoundY2:="",FoundY3:="",FoundY4:="",FoundY5:=""
CoordMode "Pixel", "Screen"
if ImageSearch(&FoundX, &FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, ".\1.png") {
if ImageSearch(&FoundX2, &FoundY2, 0, FoundY+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
if ImageSearch(&FoundX3, &FoundY3, 0, FoundY2+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
if ImageSearch(&FoundX4, &FoundY4, 0, FoundY3+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
ImageSearch(&FoundX5, &FoundY5, 0, FoundY4+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
}
CoordMode "Mouse", "Screen"
if FoundX5 || FoundY5 {
click FoundX5, FoundY5, 0
sleep 1000
}
if FoundX4 || FoundY4 {
click FoundX4, FoundY4, 0
sleep 1000
}
if FoundX3 || FoundY3 {
click FoundX3, FoundY3, 0
sleep 1000
}
if FoundX2 || FoundY2 {
click FoundX2, FoundY2, 0
sleep 1000
}
if FoundX || FoundY
click FoundX, FoundY, 0
}
-
- Posts: 7
- Joined: 01 Apr 2023, 09:19
Re: 程式如何撰寫卡關
1.Y2.Y3.Y4.Y5,後面的0是什麼意思呢?
2.請問+10是從圖的中心到下一張圖的中心位置嗎?
我這邊的文件都是只有Y座標不同,X座標相同,只要更改後面+10的數值嗎
2.請問+10是從圖的中心到下一張圖的中心位置嗎?
我這邊的文件都是只有Y座標不同,X座標相同,只要更改後面+10的數值嗎
Re: 程式如何撰寫卡關
1.
https://www.autohotkey.com/docs/v2/lib/ImageSearch.htm
2.是從圖的左上角到下一張圖的中心位置,只需更改Y坐標
Code: Select all
ImageSearch &OutputVarX, &OutputVarY, X1, Y1, X2, Y2, ImageFile
-
- Posts: 7
- Joined: 01 Apr 2023, 09:19
Re: 程式如何撰寫卡關
程式寫完後,設定X1~X5,Y1~Y5,若視窗跳出只有3.4個會停下不動作,可是跳出五個又會繼續動作
請問該怎麼修改呢?? 若X5.Y5沒偵測到就不點擊動作
請問該怎麼修改呢?? 若X5.Y5沒偵測到就不點擊動作
Re: 程式如何撰寫卡關
Code: Select all
if !FoundX5 && !FoundY5
return
Code: Select all
#Requires AutoHotkey v2.0.2
F1::
{
FoundX:="",FoundX2:="",FoundX3:="",FoundX4:="",FoundX5:=""
FoundY:="",FoundY2:="",FoundY3:="",FoundY4:="",FoundY5:=""
CoordMode "Pixel", "Screen"
if ImageSearch(&FoundX, &FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, ".\1.png") {
if ImageSearch(&FoundX2, &FoundY2, 0, FoundY+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
if ImageSearch(&FoundX3, &FoundY3, 0, FoundY2+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
if ImageSearch(&FoundX4, &FoundY4, 0, FoundY3+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
ImageSearch(&FoundX5, &FoundY5, 0, FoundY4+10, A_ScreenWidth, A_ScreenHeight, ".\1.png")
}
CoordMode "Mouse", "Screen"
if FoundX5 || FoundY5 {
click FoundX5, FoundY5, 0
sleep 1000
}
else
return
if FoundX4 || FoundY4 {
click FoundX4, FoundY4, 0
sleep 1000
}
if FoundX3 || FoundY3 {
click FoundX3, FoundY3, 0
sleep 1000
}
if FoundX2 || FoundY2 {
click FoundX2, FoundY2, 0
sleep 1000
}
if FoundX || FoundY
click FoundX, FoundY, 0
}