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 相关文章推荐
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP网站基础优化方法小结
2008/09/29 PHP
php实现jQuery扩展函数
2009/10/30 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
关于query Javascript CSS Selector engine
2013/04/12 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
详解参数传递四种形式
2015/07/21 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
python实现杨辉三角思路
2017/07/14 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
如何写好升职自荐信
2014/01/06 职场文书
十八大闭幕感言
2014/01/22 职场文书
社区维稳工作方案
2014/06/06 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
北京颐和园导游词
2015/01/30 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers