綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[分享] 寫一個可用於任何螢幕大小的腳本

[複製連結] 查看: 34932|回覆: 5|好評: 0
跳轉到指定樓層
樓主
erichuang223 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-4-11 00:49

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
看過許多人在用這些主控精靈類的軟體,但似乎沒有人會去在意寫出來的東西是否可以不受限的被應用,這個分享是將大家常會用到的座標位置控制轉換成變動性的控制,簡單的說明,我只要寫一個方法就能適用在任何不同螢幕大小的裝置上,不需要再改每個控制的座標,這個教學會有點小複雜,因為要透過Excel的函數來幫我們換算我們所找到的座標在整個螢幕上的百分比是多少,知道百分比值以後呢,當然就是用不同的螢幕解析度來做運算啦,好了不多說,一步一步的把整個運算方法跟過程一一解釋,這分教學就拿最近寫的跑跑薑餅人來解釋吧!


1). 取得圖片中的座標位置,畫面中我現在要取得按鈕Start的座標,目前取得了X為1200,Y為790
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

相對座標轉換.xlsx

10.72 KB, 下載次數: 111, 下載積分: 碎鑽 -1 個

評分

參與人數 8碎鑽 +5 幫助 +8 收起 理由
z62373212002 + 1 + 1 非常讃
wu6491 + 1
keungliang + 1 + 1 非常讚
mseveniii + 1 + 1 讚一個!
dog2147 + 1
ianxzr + 1
kioo539210 + 1 + 1 非常讚
ekids1234 + 1 + 1 非常讚

查看全部評分

收藏收藏7 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
charxp | 收聽TA | 只看該作者
發表於 2014-5-27 17:07
不太懂ㄟ
我有一個人家寫好iphone4用的lua
-- 适用屏幕参数
SCREEN_RESOLUTION="640x1136";
SCREEN_COLOR_BITS=32;


count=1;
round=0
defPrevRound=0;
bloodRound=65
hardRound=100
function main()  
   
        while count<6000 do
                fightEvil();
                mSleep(300);
        end
       
       

                                                   
end   

function fightEvil()
        count=count+1;
        --notifyMessagew(round);
       
        --判斷跳過動畫
        x, y =findColorInRegion(0x1f907d,35,569,35,569);   
        click(x,y,20,20)
        touchDown(0, 600, 570)                        
    touchUp(0);
        mSleep(300);
           x, y =findColorInRegion(0x1f907d,35,569,35,569);   
        click(x,y,20,20)
    --touchDown(0, 600, 570)                        
    --touchUp(0);

        --打完繼續
        x1, y1 =findColorInRegion(0x21937d,29,675,29,675);   
        click(x1,y1,0,0)
       
        --領獎勵
        x2, y2 =findColorInRegion(0x1f937a,95,570,95,570);   
        click(x2,y2,0,0)
       
        if round<=bloodRound then
                --血戰
                x3, y3 =findColorInRegion(0xdd4d31,135,348,135,348);   
                clickRound(x3,y3,0,0)
        elseif round<= hardRound then
                --力戰
                x4, y4 =findColorInRegion(0xd64831,134,564,134,564);   
                clickRound(x4,y4,0,0)
        else
                --奮戰
                x5, y5 =findColorInRegion(0xdf5433,136,782,136,782);   
                clickRound(x5,y5,0,0)
        end

       
    --點加成
        --30%氣血
        x6, y6 =findColorInRegion(0xdc5ea1,347,751,347,751);   
       
        --30%武力
        x7, y7 =findColorInRegion(0xd65b35,351,747,351,747);   
       
        --30%防禦
        x8, y8 =findColorInRegion(0xfbd55c,351,750,351,750);   
       
        --15%氣血
        x9, y9 =findColorInRegion(0xdb519c,343,569,343,569);   
       
        --15%武力
        x10, y10 =findColorInRegion(0xd65631,346,568,346,568);   
       
        --15%防禦
        x11, y11 =findColorInRegion(0xfbd662,349,569,349,569);   
       
       
        --以上都沒有,則點任何30%
        if x6 ~= -1 then
                --notifyMessage("氣血");  
                click(x6,y6,0,0)
        elseif x7 ~= -1 then
                --notifyMessage("武力");
                click(x7,y7,0,0)
        elseif x8 ~= -1 then
                --notifyMessage("防禦");
                clickDef(x8,y8,0,0)
        elseif x9 ~= -1 then
                --notifyMessage("氣血");
                click(x9,y9,0,0)
        elseif x10 ~= -1 then
                --notifyMessage("武力");
                click(x10,y10,0,0)
        elseif x11 ~= -1 then
                --notifyMessage("防禦");
                clickDef(x11,y11,0,0)
        elseif x6 == -1 and x7 == -1 and x8 == -1 and x9 == -1 and x10 == -1 and x11 == -1 then  
                --notifyMessage("30%");
                click30Percent();
        end
end

function clickRound(x,y,dx,dy)
       
        if x ~= -1 and y ~= -1 then
              round=round+1;
              touchDown(0, (x+dx), (y+dy)) ;
              touchUp(0);
    end

end
function clickDef(x,y,dx,dy)
        diffRound=round-defPrevRound;
        if defPrevRound == 0  then  
                click(x,y,dx,dy);
                defPrevRound=round;
        elseif diffRound >18  then  
                click(x,y,dx,dy);
                defPrevRound=round;
        else
                click30Percent();
        end
end
function click30Percent()
        x, y =findColorInRegion(0x939393,346,751,346,751);  
        if x ~= -1 and y ~= -1 then  
                click(350,385,0,0)
        else
                click(347,751,0,0);
        end

       

end
function click(x,y,dx,dy)
    if x ~= -1 and y ~= -1 then                        
        touchDown(0, (x+dx), (y+dy))   ;                     
        touchUp(0);               
        --mSleep(500);

       --notifyMessage(x);                    
       --notifyMessage(y);                             
    else                                                              
      -- notifyMessage("no");                        
    end  

end                                                              
請大大教我該怎麼樣轉換這些數值 我螢幕大小為720*1280
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
bear2268 | 收聽TA | 只看該作者
發表於 2014-6-26 14:51
謝謝分享 下來用用看~~~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
calbeechuison | 收聽TA | 只看該作者
發表於 2014-7-27 17:10
先看看怎樣計算的
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
DaimonBaby | 收聽TA | 只看該作者
發表於 2014-9-8 05:51
如果簡單的點擊按鍵就可以,但是到了複雜的座標抓色就比較麻煩了,就算按比例來座標抓色,顏色都會不一樣
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
aandroid123 | 收聽TA | 只看該作者
發表於 2015-11-20 19:51
建議使用AnkuLua,完全不必做這麼複雜的運算
腳本更是直觀簡單
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則