大家好,我是公衆号3分鐘學堂的郭立員~
合成類遊戲基本玩法就是同樣遊戲角色拖動到一起,就可以合成一個高一級别的新角色。
對于我們寫腳本來說,首要解決的問題就是如何準确識别角色的級别,以上圖為例,每個人物左側有一個編号,這個數字就是角色的等級。
針對于這個遊戲,人物雖然在不停的顫動,但是級别的數字是固定不動的。所以這個對于我們識别是比較容易的。
在識别的過程中,為了提高識别效率,我們隻識别12個人物所在的位置區域,當然别的遊戲可能16格或者更多,暫時不考慮無格子的類型啊。
識别完第一個人物等級,再識别第二個人物等級,這個識别範圍的變化是有規律的,先橫向依次移動4個格子,然後在第二行、第三行執行同樣的操作。這種代碼表示就是雙重循環。
For j = 0 To 2
For i = 0 To 3
//要循環的内容
Next
Next
假定我們初始位置是x0,y0,也就是下圖中紅框左上角的點坐标。
紅框的大小是每個人物占的位置,寬度x,高度是y,這個距離一定要測量準确,不能瞎填。
得到上面的數據以後,我們的找圖範圍就可以定下來了。
x0 i*x,y0 j*y,x0 (i 1)*x,y0 (j 1)*y
For j = 0 To 2
For i = 0 To 3
//找圖範圍是 x0 i*x,y0 j*y,x0 (i 1)*x,y0 (j 1)*y
Next
Next
這個範圍是随着循環而有規律變化的,保證每次循環找不同區域。
下面是識别數字,我的思路是從小到大,原因是小的人物合成會變成大一級别的人物。這樣識别操作會友好一些,不過也不唯一看個人習慣。
接下來要解決的拖動合成問題了,拖動合成分兩個步驟:
①确定有兩個一樣等級(數字相同)的人物,獲取他們的坐标。
②把第一個人物拖動到第二個人物上。
我解決這個問題的思路是,用一個數組存儲坐标。
比如,我獲取到等級為11的人物坐标,當獲取到第一個以後,我會先存入數組中備用,之後我會繼續往後識别看看還有沒有等級11的人物。
到這裡有兩種可能性:一是還有1個或多個等級11的人物,二是沒有等級11的人物。
先說第一種情況:還有等級11的人物,把獲取到第二個等級11人物的坐标再次存入到之前的數組中。這時數組裡面就有兩組坐标。之後加個判斷當數組裡面有兩個内容以後,執行拖動人物的操作(滑動)。下面的操作很關鍵,拖動完以後,原有的坐标已經沒用了,清空數組裡面的坐标,開始新的識别操作,以上操作重複執行。
第二種情況:也就是沒有識别到等級11的人物,那麼此時說明整個畫面上就隻有一個11級的人物,那麼11級的識别結束到此為止。開始識别等級12的人物。這個時候一定要注意,也要清空數組的坐标,否則會出現這種情況:就是數組中存在等級11的坐标,又再得到一個等級12的坐标,誤以為兩個是同等級人物的坐标,而執行了拖動人物合成的操作。
關于拖動人物合成這一步就比較簡單,一個滑動命令解決了,每次拖動成功以後,點一下購買新的人物,補充因合成後造成的空缺。
在識别的時候,我是用的找圖命令,每個數字截一個圖,之後每張圖用數字命名,目的是把循環的計次變量作為找圖的名稱。
比如像找等級6-10,就可以這樣寫,n作為圖片名稱的變量。
For n = 6 To 10
FindPic 0, 0, 0, 0, "Attachment:"&n&".png","000000", 0, 0.9, intX, intY
If intX > -1 And intY > -1 Then
End If
Next
關于合成基本思路就是這樣的,這類有固定格子的都可以用這個思路。當然也會有一些“意外情況”,比如金币不足,出現飛過去的寶箱等等,遇到這種情況加上對應的判斷。
好了内容就這些,最後還是老規矩點贊、轉發、留言、在看一條龍服務
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!