autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法


Posted in Javascript onMay 03, 2020

1、简介

定时 实现对蚂蚁森林能量的自动拾取,以及帮指定好友浇水

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

2、开发环境搭建

语言: javaScript
开发工具:vcCode. auto.js

1)、手机安装 auto.js

我们编写的脚本就是在这个上面运行
auto.js 官网
可以下载源码自己编译 apk,
同时官网提供开发文档,帮助编写开发

或者 下载别人已经编译好的 a'p'k
autojs 下载

安装在手机上,并且设置无障碍服务

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

开启音量上键关闭 运行程序

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

2)、电脑安装vcCode

为了编写脚本方便 我们在使用 vccode 来编写代码
vccode 官网下载

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

3)、vcCode 安装autojs插件

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

4)、连接电脑端的 vcCode 和手机端的 autojs(1).开启AutoJS插件

按 Ctrl+Shift+P
移动光标到命令Auto.js: Start Server,按回车键执行该命令。

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

此时VS Code会在右上角显示"Auto.js server running",即开启服务成功。

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

(2) 查看电脑ip

电脑 cmd 运行 ipconfig 命令,查找当前ip

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

(3) autojs 手机连接电脑

auto.js app 设置里点击连接电脑,输入 电脑 ip

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

电脑显示连接成功

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

3、编写功能代码

可以参考autojs 开发文档 对 功能进行开发
autojs 官方文档

1) 、使用 vcCode 进行代码编写

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

2) 使用 android sdk里面的 uiautomatorviewer.bat 抓取app 控件信息

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

3) 、运行代码

在电脑上按 F5 就能够让电脑上编写的代码直接在手机运行

4) 保存电脑上的代码到手机

按 Ctrl+Shift+P
移动光标到命令Auto.js: Sava On Device,按回车键执行该命令。

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

就保存到了手机上的 autojs apk 里面 ,以后可以直接在这里面运行。

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

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 个能量球的位置,还有好友浇水位置这里就不展示。

autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

此代码会遍历所有好友,尚不支持取判定好友是否有能量可收

文件参考:
https://github.com/hyb1996/Auto.js

到此这篇关于autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法的文章就介绍到这了,更多相关autojs 蚂蚁森林内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
Feb 26 Javascript
JavaScript NaN和Infinity特殊值 [译]
Sep 20 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
Jun 17 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
jquery实现图片按比例缩放示例
Jul 01 Javascript
jQuery中 delegate使用的问题
Jul 03 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 Javascript
Vue 按键修饰符处理事件的方法
May 04 Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
JavaScript 声明私有变量的两种方式
Feb 05 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 #Javascript
vue自定义标签和单页面多路由的实现代码
May 03 #Javascript
JavaScript函数重载操作实例浅析
May 02 #Javascript
有趣的JavaScript隐式类型转换操作实例分析
May 02 #Javascript
react-router-dom 嵌套路由的实现
May 02 #Javascript
在react中使用vue的状态管理的方法示例
May 02 #Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 #Javascript
You might like
php 代码优化的42条建议 推荐
2009/09/25 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
python实现微信小程序自动回复
2018/09/10 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python super的使用方法及实例详解
2019/09/25 Python
python线程信号量semaphore使用解析
2019/11/30 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
班长演讲稿范文
2014/04/24 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
教育读书笔记
2015/07/02 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
python 实现的截屏工具
2021/05/08 Python
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
JavaScript前端面试组合函数
2022/06/21 Javascript