Autojs 小游戏实践-神农百草园

概述

最近一直再写刷视频软件脚本,比如手机视频软件太多,每天都需要手动提现羊毛,太累,使用Autojs来帮助我提现,签到,扯远了,因为做刷视频脚本感觉有点无聊,所以试着做小游戏找图脚本看看。

实现效果

在这里插入图片描述

开发经验分享

开发小游戏所收获经验

  • 手机游戏大部分是不能用控件操作,只能找图找色。
  • 在开发中几乎不需要到多线程的东西,不要想太多,用子线程找图。
  • 游戏图片怎么截的问题,建议手机截屏相册裁剪就好。

这些经验我怎么知道的呢?

  • 第一个问题,我就不回答了
  • 第二个问题,因为我开始就是想子线程、定时子线程截图找图,看下图,因为都是子线程调用同一个方法,例如,找红包线程找图线程广告关闭找图线程都运行到截图找图方法,就出现2个问题,(1)、截图要找的目标图地址变量的值变了。(2)、我找红包图片找到了,进行删除了,但是广告关闭图片线程才刚刚比较截图,最后发现图片没了,直接报错.

在这里插入图片描述

  • 第三个问题,我自己遇到的,因为截图后用QQ或者微信发图片会压缩画质,比较模糊,还有裁剪图后还得发回来,感觉比较麻烦。

实现代码

/** 截图申请,需要确认同意 */
var requestScreenCaptureThread_screenshot = threads.start(function () {sleep(2000)var beginBtn;if (beginBtn = classNameContains("Button").textContains("允许").findOne(2000)) {beginBtn.click();}
});
/* 请求截图结果 */
if (!requestScreenCapture()) {toast("请求截图失败");exit();
}
var 小兔 = "/sdcard/Pictures/Screenshots/s12.jpg";
var 打开红包 = "/sdcard/Pictures/Screenshots/s14.jpg";
var 开心收下 = "/sdcard/Pictures/Screenshots/s15.jpg";
var 收获 = "/sdcard/Pictures/Screenshots/s16.jpg";
var 播种 = "/sdcard/Pictures/Screenshots/s17.jpg";
var 关闭 = "/sdcard/Pictures/Screenshots/s18.jpg";
var 找多个红包 = "/sdcard/Pictures/Screenshots/s35.jpg";
var 找多个红包1 = "/sdcard/Pictures/Screenshots/s20.jpg";
var 除虫 = "/sdcard/Pictures/Screenshots/s21.jpg";
// var 种植 = "/sdcard/Pictures/Screenshots/s22.jpg";
// var 炼丹= "/sdcard/Pictures/Screenshots/s24.jpg";
var 免费制作= "/sdcard/Pictures/Screenshots/s25.jpg";
var 接单= "/sdcard/Pictures/Screenshots/s27.jpg";
var 立即接单= "/sdcard/Pictures/Screenshots/s28.jpg";
var 紫女红包= "/sdcard/Pictures/Screenshots/s29.jpg";
// var 大号红包= "/sdcard/Pictures/Screenshots/s30.jpg";
// var 播种 = "/sdcard/Pictures/Screenshots/s31.jpg";
var 种植 = "/sdcard/Pictures/Screenshots/s34.jpg";
var 大号红包 = "/sdcard/Pictures/Screenshots/s33.jpg";
var 炼丹 = "/sdcard/Pictures/Screenshots/s36.jpg";
/** 主线程 ,因为是自己刚刚写好的,没有完全的封装好代码,希望谅解*/
while (true) {findMaps1(收获)sleep(3000,4000)findMaps(种植)sleep(3000,4000)findMap(炼丹)sleep(3000,4000)findMap(免费制作)sleep(3000,4000)findMap(除虫)sleep(3000,4000)findMaps(找多个红包)sleep(3000,4000)findMap(打开红包)sleep(3000,4000)findMap(关闭)sleep(3000,4000)findMap(开心收下)sleep(3000,4000)findMap(接单)sleep(3000,4000)findMap(立即接单)sleep(3000,4000)findMap(大号红包)sleep(3000,4000)findMap(种植)sleep(3000,4000)findMap(找多个红包1)sleep(3000,4000)}/*** 单图点击* @param {*} name * @returns */
function findMap (name) {console.log(name);let img = captureScreen();let temp1 = images.read(name);let p = images.findImage(img, temp1);if (p) {click(p.x, p.y)temp1.recycle();return true;}temp1.recycle();return false;
}/*** 多图点击* @param {*} name * @returns */
function findMaps (name) {console.log(name);let img = captureScreen();let temp1 = images.read(name);let result = images.matchTemplate(img, temp1, { max: 3 });if (result.matches.length > 0) {console.log("11:",result.matches.length);for (let i = 0; i < result.matches.length; i++) {let pp = result.matches[i].pointlet xx = random(pp.x, pp.x + temp1.getWidth())let yy = random(pp.y, pp.y + temp1.getWidth())click(xx, yy)sleep(2000)break;}temp1.recycle();return true;}temp1.recycle();return false;
}function findMaps1 (name) {console.log(name);let img = captureScreen();let temp1 = images.read(name);let result = images.matchTemplate(img, temp1, { max: 3 });if (result.matches.length > 0) {console.log("11:",result.matches.length);for (let i = 0; i < result.matches.length; i++) {let pp = result.matches[i].pointlet xx = random(pp.x, pp.x + temp1.getWidth())let yy = random(pp.y, pp.y + temp1.getWidth())click(xx, yy)sleep(2000)}temp1.recycle();return true;}temp1.recycle();return false;
}

总结

可能写得不好,希望大佬谅解,如果写得不好或者需要改进的地方,欢迎大佬们指出,毕竟刚自学不久,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107130.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GO语言基础】变量常量

系列文章目录 【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 文章目录 系列文章目录常量和枚举变量声明全局变量声明大小写敏感 总结 常量和枚举 使用const关键字声明常量&#xff0c;并为每个常量提供显式的值。Go语言没有…

IDEA启动时选择项目

IDEA默认情况下&#xff0c;启动时会选择上一次打开的项目继续。如果我们希望每次启动时都需要手动选择项目&#xff0c;可以按照下列顺序修改&#xff1a; 【File】-【Settings】-【Apperance&Behavior】-【System Settings】-【Startup/Shutdown】 取消选中Reopen last…

LayoutLM【论文翻译】

文章目录 基础信息0 ABSTRACT1 INTRODUCTION2 LAYOUTLM2.1 The BERT Model2.2 The LayoutLM Model2.3 Model Architecture2.4 Pre-training LayoutLM2.5 Fine-tuning LayoutLM 3 EXPERIMENTS3.1 Pre-training Dataset3.2 Fine-tuning Dataset3.3 Document Pre-processing3.4 Mo…

200个常用的Python编程相关英语词汇以及它们的中文释义

大家好&#xff0c;我是涛哥。 好多小伙伴反馈说在学习python的过程中&#xff0c;遇到的英文比较多&#xff0c;为自己的学习和开发产生了很大的阻力&#xff0c;所以为大家梳理了一份 Python编程相关常用的英语词汇以及它们的中文释义&#xff0c;当你刚开始学习Python编程的…

profinet是什么?

profinet是什么&#xff1f; 参考&#xff1a;一文读懂Profibus、Profinet、Ethernet的区别 PROFINETPROFIbusetherNET&#xff0c;把Profibus的主从结构移植到以太网上&#xff0c;所以profinet会有Controller和Device&#xff0c;他们的关系可以简单的对应于profibus的Maste…

【C++模拟实现】手撕红黑树(含图解)

【C模拟实现】手撕红黑树&#xff08;含图解&#xff09; 目录 【C模拟实现】手撕红黑树&#xff08;含图解&#xff09;红黑树的介绍&#xff08;百度百科&#xff09;简介特征&#xff08;十分重要&#xff0c;红黑树的基础&#xff09; 红黑树的实现代码&#xff08;insert部…

C++之weak_ptr与shared_ptr智能指针实例(一百九十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

美陆军推动人工智能算法的持续更新

源自&#xff1a;蓝德智库 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xff0c;如转载稿涉及版权等问题&#xff0c;请立即联系我们删除。 “人工智能技术与咨询”…

C++(day5)

思维导图 小练习 实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c;公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性…

攻防世界-WEB-easyupload

1.新建.user.ini文件&#xff0c;内容如下 GIF89a auto_prepend_filea.jpg 2.上传该文件&#xff0c;并用burp抓包&#xff0c;将Content-Type: application/octet-stream修改为 Content-Type: image/jpg 3.放包&#xff0c;结果如下 4. 新建a.txt文件&#xff0c;内容为 GIF89…

窗口函数-分组排序:row_number()、rank() 、dense_rank()、ntile()

窗口函数语法结构&#xff1a; 分析函数() over(partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置) 开窗函数和聚合函数区别&#xff1a; 聚合函数会对一组值进行计算并返回一个值&#xff0c;常见的比如sum()&#xff0c;count()&#xff0c;ma…

Autojs 小游戏实践-潮玩宇宙开扭蛋

概述 最近在玩潮流宇宙&#xff0c;里面有扭蛋兔的一个玩法&#xff0c;开始有很多蛋&#xff0c;需要我们一个个点开&#xff0c;然后根据装备品质替换分解&#xff0c;潮流提供了自动开扭蛋功能&#xff0c;但是开到品质比自己装备好的时候回暂停&#xff0c;由于个人懒得看…