最近利用Auto.js写了一个支付宝蚂蚁森林自动收集自己能量和好友能量的小程序,现在发布出来共享给大家。程序在我的华为手机上运行效果非常好。
//1.解锁屏幕
unlock();
//2.启用按键监听
registEvent()
//3.打开蚂蚁森林
enterMyMainPage();
//4.收集自己的水
collectMyOwnEnergy();
//5.点击“查看更多好友”,进入好友排行榜,收集好友能量
collectFriendsEnergy();
//这个是点亮锁屏的函数
function unlock(){
if(!device.isScreenOn()){
//点亮屏幕
device.wakeUp();
sleep(1000);
//滑动屏幕到输入密码界面
swipe(500, 1900, 500, 1000, 300);
sleep(1000);
//输入四次 7 (密码为7777) 数字键7的像素坐标为(180,1530)
click(180,1530);
sleep(500);
click(180,1530);
sleep(500);
click(180,1530);
sleep(500);
click(180,1530);
sleep(500);
}
}
//进入蚂蚁森林主页
function enterMyMainPage(){
launchApp("支付宝");
toastLog("等待支付宝启动");
sleep(1000);
click("蚂蚁森林");
sleep(3000);
}
function collectMyOwnEnergy(){
toastLog("下面开始收集我自己的能量");
if(!requestScreenCapture()){
toastLog("请求截图失败");
exit();
}
var colorGreen = "#C3FF60";
var countTopLimit = 10;//通过限制次数来保证程序陷入的情况下也能够退出
var img = captureScreen();
//toastLog("循环"+num);
var pointEnergyBall=findColor(img,colorGreen,{ region: [0, 0, 800, 800],threshold: 10 });
while(pointEnergyBall){
toastLog("(^_^)");
click(pointEnergyBall.x,pointEnergyBall.y+20);
sleep(1000);
countTopLimit--;
if(countTopLimit <= 0){
toastLog("已经到了最大次数,程序退出");
break;
}
img = captureScreen();
pointEnergyBall=findColor(img,colorGreen,{ region: [0, 0, 800, 800],threshold: 10 });
}
toastLog("收集我自己的能量结束");
sleep(1000);
}
function collectFriendsEnergy(){
sleep(1000);
descEndsWith("查看更多好友").findOne().click();
sleep(1000);
if(!requestScreenCapture()){
toastLog("请求截图失败");
exit();
}
var colorGreenHand="#1DA06D";
var inviteFriendGreen = "#2EC06E";
while(true){
var img = captureScreen();
var pointHand=findColor(img,colorGreenHand,{ region: [1000, 400],threshold: 10 });
if(pointHand && text("好友排行榜").exists()){//找到绿色,包括手还有计时
toastLog("找到了有水的好友,开始偷他的水");
lastPointHand = pointHand;
collectEnergy(pointHand);
}else{
var inviteFriendBox = findColor(img,inviteFriendGreen,{ region: [1000, 400],threshold: 10 });
if(inviteFriendBox){
toastLog("到了好友列表的最后,退出好友排行榜");
click(60,120);//点击返回到列表
sleep(1000);
break;
}else{
swipe(500,1800,500,100,1000);//没有到结尾就翻页
sleep(1000);
}
}
}
}
//以下是在好友主页面收集好友水的函数
function collectEnergy(pointHand){
click(pointHand.x,pointHand.y+50);
sleep(3000);
//下面是尝试用颜色来定位好友能量球的方法
var colorGreen = "#C3FF60";
var countTopLimit = 5;
var img = captureScreen();
//toastLog("循环"+num);
var pointEnergyBall=findColor(img,colorGreen,{ region: [0, 0, 800, 1000],threshold: 10 });
while(pointEnergyBall){
toastLog("(^_^)");
click(pointEnergyBall.x,pointEnergyBall.y+20);
countTopLimit --;
if(countTopLimit <= 0){
toastLog("已经到了最大次数,程序退出");
break;
}
sleep(1000);
img = captureScreen();
pointEnergyBall=findColor(img,colorGreen,{ region: [0, 0, 800, 1000],threshold: 10 });
}
toastLog("该好友收取完毕,返回好友列表");
click(60,120);//点击返回到列表
sleep(1000);
//从好友主页偷完水回来后要往上滑动,以免该好友的图标是倒计时,程序一旦陷入便无法退出
swipe(500, 2000, 500, 2000-pointHand.y, 800);
sleep(1500);
}
//该函数的作用是程序运行时可以随时按音量减小键退出
function registEvent() {
threads.start(function(){
//在子线程中调用observeKey()从而使按键事件处理在子线程执行
events.observeKey();
events.on("key_down", function(keyCode, events){
//音量键关闭脚本
engines.stopAllAndToast();
exit();
});
});
}
几点说明:
1、程序主要由解锁屏幕、启用按键监听、打开蚂蚁森林、收集自己的水、收集好友能量五个部分组成;
2、启用按键监听这部分代码的作用是程序运行时可以随时按音量减小键退出;
3、程序要想正确运行支付宝界面必须在首页,同时蚂蚁森林的入口要放到首页;
4、收集自己的能量这部分是通过Auto.js的寻找颜色函数findColor()来找可收集的能量球,同时设置了最大取水次数为10,超过10次程序退出,这样可以有效防止程序判断错误而无法退出的情况;
5、收集好友能量分两部分,第一部分是在好友排行榜页面找可以收集水的好友,第二部分是进入可收水好友的主页,收集他的能量球。第一部分是通过判断好友列表中每个人右上角有没有绿色图标来确定是否进入好友主页,由于绿色图标分为小手图标和倒计时图标,这两个图标都是绿白相间差异不大,所有我没有做区分,无论哪种程序都要进去。同时,为了防止程序反复进入具有倒计时图标的某个好友页面,每次从好友页面退到好友列表页面后,手机都要自动上滑,使刚刚进入过的好友不在手机页面上。第二部分手机好友能量的程序与收集自己的能量这部分代码类似。
6、代码下载地址:https://github.com/hudeyu/-Auto.js-