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 相关文章推荐
js 图片轮播(5张图片)
Dec 30 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
关于js中for in的缺陷浅析
Dec 02 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
jQuery-mobile事件监听与用法详解
Nov 23 Javascript
canvas 实现中国象棋
Feb 17 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
原生js实现简单的Ripple按钮实例代码
Mar 24 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
详解javascript void(0)
2020/07/13 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
python实现rsa加密实例详解
2017/07/19 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
Sony C++笔试题
2013/03/10 面试题
国际贸易毕业生求职信范文
2014/02/21 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
班训口号大全
2014/06/18 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
python字典进行运算原理及实例分享
2021/08/02 Python
在Docker容器中部署SQL Server
2022/04/11 Servers