歡迎您光臨本站 註冊首頁

autojs 螞蟻森林能量自動拾取即給指定好友澆水的實現方法

←手機掃碼閱讀     e36605 @ 2020-05-11 , reply:0

1、簡介
定時 實現對螞蟻森林能量的自動拾取,以及幫指定好友澆水
2、開發環境搭建
語言: javaScript
開發工具:vcCode. auto.js
1)、手機安裝 auto.js
我們編寫的腳本就是在這個上面運行
auto.js 官網
可以下載源碼自己編譯 apk,
同時官網提供開發文檔,幫助編寫開發
或者 下載別人已經編譯好的 a'p'k
autojs 下載
安裝在手機上,並且設置無障礙服務
開啟音量上鍵關閉 運行程序
2)、電腦安裝vcCode
為了編寫腳本方便 我們在使用 vccode 來編寫代碼
vccode 官網下載
3)、vcCode 安裝autojs插件
4)、連接電腦端的 vcCode 和手機端的 autojs(1).開啟AutoJS插件
按 Ctrl+Shift+P
移動光標到命令Auto.js: Start Server,按回車鍵執行該命令。
此時VS Code會在右上角顯示"Auto.js server running",即開啟服務成功。
(2) 查看電腦ip
電腦 cmd 運行 ipconfig 命令,查找當前ip
(3) autojs 手機連接電腦
auto.js app 設置裡點擊連接電腦,輸入 電腦 ip
電腦顯示連接成功
3、編寫功能代碼
可以參考autojs 開發文檔 對 功能進行開發
autojs 官方文檔
1) 、使用 vcCode 進行代碼編寫
2) 使用 android sdk裡面的 uiautomatorviewer.bat 抓取app 控件信息
3) 、運行代碼
在電腦上按 F5 就能夠讓電腦上編寫的代碼直接在手機運行
4) 保存電腦上的代碼到手機
按 Ctrl+Shift+P
移動光標到命令Auto.js: Sava On Device,按回車鍵執行該命令。
就保存到了手機上的 autojs apk 裡面 ,以後可以直接在這裡面運行。
5)自動拾取螞蟻能量的參考代碼
auto();// 自動打開無障礙服務 // 以下數據需自己適配 var boundTopY = 560 ; //能量區域上 自己手機上的能量區域 需要更改本機適配 var boundBomY = 820; //能量區域下 var boundLeftX = 150; //能量區域左 var boundRightX = 900; //能量區域右 var enrgyBound = 80; //自己手機能量球大小 120 取 80 跨度 var energyPoint = [220,740,360,690,490,640,610,610,750,640,890,770] //自己手機 能量球位置 ,最多六個 需自己適配 x 座標 /Y 座標 依次排列 var waterPointX = 980; //好友 澆水按鈕x座標 需自己適配 var waterPointY = 1520; //打開森林頁面 function openForestPage(){ launchApp("支付寶") //打開支付寶 text("首頁").waitFor() sleep(500) click("首頁") //點擊首頁 text("螞蟻森林").waitFor() sleep(500) click("螞蟻森林") //點擊首頁 //點擊螞蟻森林 } //拾取自己能量 function collectOwnEnergy(){ text("公益林").waitFor() sleep(1000) if ( null != textContains("收集能量").findOne(3000)) { var Energys = textContains("收集能量").find() //查找所有的可以蒐集的能量 for (var i = 0; i< Energys.length;i++) { var energyBound = Energys[i].bounds() click(energyBound.centerX(), energyBound.centerY()); } } } //通過區域來點選能量球 function collectOtherEnergyFromBound(){ for (var x = boundLeftX ; x < boundRightX;x += enrgyBound ){ for (var y = boundTopY; y < boundBomY; y += enrgyBound ){ click(x,y) } } } //通過能量球的位置來點選 function collectOtherEnergyFromPoint(){ for (var i = 0; i<energyPoint.length;i += 2){ click(energyPoint[i],energyPoint[i+1]) } } //拾取他人或者自己能量 function collectOtherEnergy(){ //collectOtherEnergyFromBound() collectOtherEnergyFromPoint() } //點擊查看更多好友 function swipToMoreFriends(){ while(!text("查看更多好友").exists()) { swipe(device.width/2, device.height * (2/3), device.width/2, device.height/3, 1000); } text("查看更多好友").findOne().click() sleep(2000) while(!text("沒有更多了").exists()) { swipe(device.width/2, device.height * (5/6), device.width/2, device.height/6, 1000); } } //獲取好友的名字 function getFriendName(friend){ return friend.child(2).child(0).child(0).text() } //判斷點擊的是不是自己 function judgeIfSelf(friend){ var name = getFriendName(friend) if (name == "靜水魚遊") { return true } else { return false } } //給好友澆水 function waterFriendEnergy(){ click(waterPointX,waterPointY) sleep(2000) if (text("澆水送祝福").exists()) { click("澆水送祝福") } sleep(500) } //拾取好友能量 function selectFriendsEnergy(){ // toast(11111) var friendsList = className("android.webkit.WebView").findOne().child(0).child(0).child(1) //獲取好友列表 for (var i = 0;i<friendsList.childCount() ;i++){ //toast(i) if(!judgeIfSelf(friendsList.child(i))){ var waterFriend = judgeWaterDesignatedFriends(friendsList.child(i)) //不給好友澆水 註釋掉 friendsList.child(i).click() sleep(2000) collectOtherEnergy() if (waterFriend) {waterFriendEnergy()} //不給好友澆水 註釋掉 back() sleep(1000) } } } //給指定澆水的好友 function judgeWaterDesignatedFriends (friend){ var waterFriendList = ["小豬佩奇","喜羊羊"] //給澆水的好友 數組 for (var i= 0;i< waterFriendList.length;i++) { if (waterFriendList[i] == getFriendName(friend)) { return true } } return false } //解鎖手機 function unlock(){ if(!device.isScreenOn()){ //點亮屏幕 device.wakeUp(); sleep(1000); //滑動屏幕到輸入密碼界面 swipe(device.width/2, device.height/2, device.width/2, device.height/5, 1000); sleep(1000); id("com.android.systemui:id/key1").findOne(2000).click() //根據密碼佈局找到對應按鍵 sleep(500) id("com.android.systemui:id/key2").findOne(2000).click() sleep(500) id("com.android.systemui:id/key3").findOne(2000).click() sleep(500) id("com.android.systemui:id/key4").findOne(2000).click() sleep(500) id("com.android.systemui:id/key5").findOne(2000).click() sleep(500) id("com.android.systemui:id/key6").findOne(2000).click() } } //退出程序 function endCollectEnergy(){ back();sleep(1000); back();sleep(1000); back();sleep(1000); home() } //unlock() openForestPage() collectOwnEnergy() swipToMoreFriends() selectFriendsEnergy() endCollectEnergy()
因為好友頁面螞蟻森林使用html 製作,不能用元素 獲取,所以不同機型需要根據自己機型設置。
具體位置 可以打開 自己開發者選項 裡面的 指針位置 進行定位
圖中方框 是自己機器設定的區域位置,和 能量球大小。
也可以自己定位 自己手機上 6 個能量球的位置,還有好友澆水位置這裡就不展示。
此代碼會遍歷所有好友,尚不支持取判定好友是否有能量可收
文件參考:
https://github.com/hyb1996/Auto.js


[e36605 ] autojs 螞蟻森林能量自動拾取即給指定好友澆水的實現方法已經有282次圍觀

http://coctec.com/docs/javascript/show-post-233812.html