【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)

前言:最近跳一跳太火,大家都在写,今天把原理来说说,说得不对欢迎指出!

注:请不要加我微信,免得尴尬!(^_^)

【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)

准备工作:

1.电脑

2.数据线

3.安卓手机(因为我这渣渣电脑带不动模拟器,只能写真机版)

第一步:电脑安装ADB(https://developer.android.google.cn/studio/releases/platform-tools.html)

下载解压就可以了

第二步:大家不需要配置啥环境变量,我搞半天没搞懂,直接在ADB目录创建易语言源码就不需要配置了!

第三步:手机用数据线连接电脑。手机打开USB调试,还需要打开手机USB调试下面的“模拟按键”

没有“模拟按键”的就打开“USB安全权限”,以我VIVOX20A打开“USB安全权限”打不开,

问客服才知道要先退出VIVO账号,再登陆,才能打开。

第四步:打开第二步创建的易语言源码,创建图片框、两个按钮、一个编辑框。界面如下

【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)

以上工作做完之后,先来测试下ADB,看是否连接到手机

到ADB目录创建一个a.bat

a.bat用记事本打开

输入”start"保存

运行a.bat得到一个CMD界面

在CMD里面输入“adbshellinputkeyevent3”(这个是按下手机主页面键)回车,看手机是否回到主页面

并且CMD里面没有输出错误!

【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)

以上准备工作做完,下面进入代码阶段:

自动模式:

因为跳一跳背景和道具多为渐变色,所以识别不是太好,说下原理(我用这个模式只跳220多点)

第一步:截取手机屏幕保存为图片,并送传到电脑,加载到图片框,代码如下(子程序名:那么我们就开始跳吧)

.版本 2.子程序 那么我们就开始跳吧' 删除之前取到的截图
.判断开始 (集开始 = 假)返回 ()
.默认.判断结束删除文件 (取运行目录 () + “\tiaoyitiao.png”)' 使用adb命令截取手机屏幕运行 (“adb shell screencap -p /sdcard/tiaoyitiao.png”, 真, 1)  ' 手机截屏保存到SD卡根目录
运行 (“adb pull /sdcard/tiaoyitiao.png”, 真, 1)  ' 图片传送到电脑程序目录上图片框1.图片 = 读入文件 (取运行目录 () + “/tiaoyitiao.png”)  ' 把图片显示到软件上.判断开始 (集手动 = 假)取棋子底部坐标 ()
.默认

代码都有备注,可以看看,看到最后面有个“取棋子底部坐标()”
那么下一步代码

.版本 2.子程序 取棋子底部坐标
.局部变量 color, 整数型
.局部变量 刷子句柄, 整数型
.局部变量 画笔句柄, 整数型
.局部变量 r, 整数型
.局部变量 g, 整数型
.局部变量 b, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型' 临时代码 ()dc = GetDC (图片框1.取窗口句柄 ())  ' 设置场景画笔句柄 = CreatePen (0, 1, #黑色)  ' 画笔颜色 、 形状、粗细刷子句柄 = CreateSolidBrush (#红色)  ' 刷子颜色x = 0
y = 270  ' 定位Y270 加快速度.判断循环首 (真)x = x + 1.判断开始 (x > 图片框1.宽度)  ' X轴不能大于组件宽度x = 1y = y + 1.判断 (y > 图片框1.高度)  ' Y轴不能大于组件高度_按钮1_被单击 ()信息框 (“未找到”, 0, , )跳出循环 ().默认.判断结束color = GetPixel (dc, x, y)  ' 取坐标颜色.判断开始 (color = 6042679)  ' 棋子特征颜色跳出循环 ().判断 (color = 6502712)  ' 棋子特征颜色跳出循环 ().判断 (color = 6371383)  ' 棋子特征颜色跳出循环 ().判断 (color = 6699831)  ' 棋子特征颜色跳出循环 ().默认.判断结束.判断循环尾 ()SelectObject (dc, 画笔句柄)  ' 更换画笔Ellipse (dc, x - 3, y - 3, x + 3, y + 3)  ' 画空心圆SelectObject (dc, 刷子句柄)  ' 更新刷子Ellipse (dc, x - 3, y - 3, x + 3, y + 3)  ' 画实心圆DeleteObject (刷子句柄)  ' 释放刷子DeleteObject (画笔句柄)  ' 释放画笔棋子.x = x  ' 记录棋子坐标
棋子.y = y输出调试文本 (“棋子颜色:” + 到文本 (color))取小板登坐标 ()

可以看到,棋子我是直接找的4个颜色,经过多方测试,这四个颜色都能识别到棋子底部

找到这个颜色就把坐标记录下来。并且用刷子在坐标的位置画个实心圆显示给我们看,

方便调试!

而且Y轴是从270开始的,一行一行的找,加快速度,按我的图片框高度是从270的!!!!

棋子的坐标找到了,那么我们再找“板凳”的坐标(“板凳”的坐标识别不太理想)

.版本 2.子程序 取小板登坐标
.局部变量 color, 整数型
.局部变量 刷子句柄, 整数型
.局部变量 画笔句柄, 整数型
.局部变量 r, 整数型
.局部变量 g, 整数型
.局部变量 b, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 color2, 整数型' 临时代码 ()dc = GetDC (图片框1.取窗口句柄 ())画笔句柄 = CreatePen (0, 1, #黑色)刷子句柄 = CreateSolidBrush (#绿色)x = 0
y = 140  ' 默认从200开始,加快取色速度.判断循环首 (真)x = x + 1.判断开始 (x > 图片框1.宽度)  ' 像素x不超过组件的宽度x = 1y = y + 1.判断 (y > 图片框1.高度)  ' 像素Y不超过组件的高度_按钮1_被单击 ()信息框 (“未找到”, 0, , )跳出循环 ().默认.判断结束color = GetPixel (dc, x, y)  ' 获取坐标颜色值.判断开始 (color2 = 0)  ' 如果color2=0 ,也就是第一次取色,把取到的颜色给他保存color2 = color.判断 (color - color2 > 78000)  ' 背景颜色是个渐变色,差值不超过10万 超过则说明,到达要跳的物体顶部跳出循环 ().判断 (color = 16185078)  ' 白色石头跳出循环 ().判断 (color = 7435156)  ' 褐色石头跳出循环 ().判断 (color = 7434609)  ' 黑灰石头跳出循环 ().判断 (color = 7040912)跳出循环 ().判断 (color = 15856113)跳出循环 ().判断 (color = 6655572)跳出循环 ().判断 (color = 9291745)跳出循环 ().默认.判断结束.判断循环尾 ()SelectObject (dc, 画笔句柄)  ' 把画笔载入y = y + 20Ellipse (dc, x - 5, y - 5, x + 5, y + 5)  ' 用画笔画空心圆SelectObject (dc, 刷子句柄)  ' 更换成刷子Ellipse (dc, x - 5, y - 5, x + 5, y + 5)  ' 用刷子画实心圆DeleteObject (刷子句柄)DeleteObject (画笔句柄)马桶.x = x
马桶.y = y输出调试文本 (“马桶颜色:” + 到文本 (color))屁股定理 ()

可以看到“板凳”的Y轴从140开始的,因为通常“板登”都在棋子上方

找的“板凳”是“板凳”的最上面的一个点的坐标,并且画个实心圆,方便调试

找到的坐标也记录下来

棋子、板凳坐标识别界面图如下

【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)

可以看到棋子的底部有个红色的实心圆显示找到的坐标

板凳上也有个绿色的实心圆显示坐标(板凳的绿色圆在板凳中间偏上是因为我识别的时候是识别到顶部的,然后我在代码中把板凳的Y轴+30个像素,因为要取板凳中间的坐标的算法还没想出来,比较麻烦,所以就只取了一个顶部的坐标,然后下移30个像素,像小板凳啥的30个刚好)

其实找板凳的颜色只有上面两个判断,后来分数多了,背景色不断变化,就有添加了一个固定的颜色

上面棋子和板凳的坐标找到了,那么进入“勾股定理”(其实我小学没毕业,早忘了这东西了,百度重学的)

计算棋子到板凳直线距离代码如下:

.版本 2.子程序 屁股定理
.局部变量 x, 整数型, , , 宽度
.局部变量 y, 整数型, , , 高度
.局部变量 平方, 双精度小数型
.局部变量 时间, 整数型.判断开始 (棋子.x > 马桶.x)  ' 如果马桶的x轴小于棋子的x轴,,也就是马桶在左边,我们要往左边跳x = 棋子.x - 马桶.x.默认x = 马桶.x - 棋子.x  ' 往右跳
.判断结束y = 棋子.y - 马桶.y  ' 取得高度' 直角三角型的屁股定理平方 = x × x + y × y平方 = 求平方根 (平方)  ' 取得棋子到马桶的直线距离平方 = 平方 × 到数值 (编辑框1.内容)  ' 计算要跳的时间(毫秒)时间 = 到整数 (平方)我要跳高 (时间)

上面求到直线距离为什么要*编辑框的微调呢?

1.大多手机屏幕分辨率不一样,得到的截图尺寸有大小

2.截图的图片加载到图片框是经过缩放的,而且是按比例缩放

3.一般我测试出的按压时间在200-900毫秒之间

也就是得到的直线距离是30的话,要按到300毫秒,那么微调为10

以我的手机和我设置的图片框尺寸,微调在4.8-5.0之间

最后把得到的按压时间传给下一子程序去执行手机按压

.版本 2
.支持库 spec.子程序 我要跳高
.参数 时间, 整数型
.局部变量 a, 文本型.如果真 (集开始 = 假)返回 ()
.如果真结束运行 (“adb shell input swipe 251 255 380 395 ” + 到文本 (时间), 真, 1)延迟 (2000)那么我们就开始跳吧 ()

运行的那段代码是让手机模拟滑动,从什么地方按住滑动到什么地方,最后一个就是滑动的时间(毫秒)

以上自动跳一跳就完了,测试不理想,就加了个手动档,这个简单

.版本 2.子程序 _按钮手动档_被单击集开始 = 真集手动 = 真
那么我们就开始跳吧 ()

按下手动档,取一次手机屏幕到图片框

.版本 2.子程序 _图片框1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型' dc = GetDC (0)
' 输出调试文本 (GetPixel (dc, 取鼠标水平位置 (), 取鼠标垂直位置 ()))棋子.x = 取鼠标水平位置 ()
棋子.y = 取鼠标垂直位置 ().子程序 _图片框1_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型马桶.x = 取鼠标水平位置 ()
马桶.y = 取鼠标垂直位置 ()屁股定理 ()

鼠标在图片框的棋子下按下不放

到板凳的中心位置放开鼠标,就得到了棋子和板凳的坐标

再调用上面写完的“屁股定理()”

之后就是按鼠标,放鼠标了,不需要再按手动档按钮

附上源码,无模块,无病毒!移步:http://down.51cto.com/data/2387983

转载于:https://blog.51cto.com/13334510/2059782

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

1024对话内核大神谢宝友

我看了CSDN的采访,感觉比较官方,不知道是不是编辑的原因把一些内容给隐藏了,所以我还是想完整的内容放出来给大家看看,这些问题,可能是很多后辈程序员非常关心的。 今天是1024节,这个数字对于写在电脑前写代…

对话谢宝友:搞真正自研的国产操作系统,而不是伪创新

作者 | 郑丽媛 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 从国外操作系统的长期垄断到中国自主研发操作系统数十年的起落浮沉,技术自主创新独立已成为国产基础软件的主要突破口。近几年间,随着物联网时代的到来&#xff0…

Oracle数据库硬核知识

大家好🙌!我是你们的好朋友,大数据老虾😀。相遇是缘,既然来了就拎着小板凳坐下来一起唠会儿,万水千山总是情,一起学习行不行~如果在文中有所收获,请别忘了一键三连,你的鼓励&#xf…

NOIP蒟蒻组初赛攻略

系统与网络安全 计算机相关 计算机发展史 1946-1958年第一代电子管计算机,主要用于科学计算、军事研究; 1959-1964年第二代晶体管计算机,主要用于数据处理; 1965-1970年第三代集成电路计算机,主要用于工业控制、科…

Misc小总结

文章目录 Misc分类编码贝斯家族base16base32base64base62base45base58base85base91base100base换表base隐写WhiteSpace编码零宽隐写垃圾邮件加密JSfuck当铺密码百家姓Wakandan符号九宫八卦二十八星宿拼音编码编码总结 压缩包爆破伪加密CRC爆破明文攻击 PNG隐写宽高修改IDAT块隐…

ModaHub魔搭社区——Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch矢量数据库对比

资本市场上,2022年也是风起云涌的一年的,各大向量数据库公司纷纷完成了千万美元级别新一轮的融资。可以预见,2023年将会是向量数据库继续快速发展的一年,也会是这一新兴技术由发展走向成熟的一年。这里针对Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch这五个流行的…

激活函数总结(六):ReLU系列激活函数补充(RReLU、CELU、ReLU6)

激活函数总结(六):ReLU系列激活函数补充 1 引言2 激活函数2.1 RReLU激活函数2.2 CELU激活函数2.3 ReLU6 激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…

【C++】STL---string

string类 一、C语言中的字符串二、string类三、模拟实现 string 类0. string 类的声明1. 构造函数2. 析构函数3. 拷贝构造函数4. 赋值运算符重载5. 迭代器6. 元素访问:[] 重载7. 流插入与流提取重载8. 与容量相关的接口(1)size(2&…

EVE-NG 隐藏没有镜像的模板

eve-ng 默认情况下,在添加node时,会列出所有的模板,这样用着很不方便。 通过以下方式,可以使没有设备的模板不可见 cp /opt/unetlab/html/includes/config.php.distribution /opt/unetlab/html/includes/config.php 如下图&#…

宴会及会议座位排版软件

本人正在基于XDesignerLib软件开发了一个宴会/会议座位排版软件,这是一种很具特色的软件,它以非常形象生动的图形化界面来展示座位的排版和人员的入座信息,并能根据座位礼仪的规定自动调整显示。 本软件能使用方便快捷的拖拽操作来设置人员…

怎么让计算机锁屏之后网络不断,win10系统如何设置锁屏时不断网|win10系统锁屏断网的还原办法...

win10系统使用久了,好多网友反馈说win10系统如何设置锁屏时不断网|win10锁屏断网的问题,非常不方便。有什么办法可以永久解决win10系统如何设置锁屏时不断网|win10锁屏断网的问题,面对win10系统如何设置锁屏时不断网|win10锁屏断网的图文步骤…

虚拟服务器怎么解除锁屏,虚拟服务器怎么不设置锁屏

虚拟服务器怎么不设置锁屏 内容精选 换一换 裸金属服务器支持敏感操作保护,在控制台进行敏感操作时,需要输入一种能证明身份的凭证,身份验证通过后方可进行相关操作。为了账号安全,建议开启操作保护功能,该功能对账号以…

<optional>true</optional> 依赖不传递

为什么不包含依赖的ConditionOnClass 能成功导入? 这里涉及到依赖传递的问题 滑动验证页面https://segmentfault.com/a/1190000019266080?utm_sourcetag-newest

深信服云桌面linux客户端,深信服桌面云

VDI是一款基于互联网的云上虚拟windows桌面服务,即可在线体验大屏超清画质视频,在线一键配置升级,无需其它硬件,一个账号可满足家庭成员各类需求,深信服桌面云具有多平台、稳定性好、维护安装过程简化等特点&#xff0…

gnome桌面显示计算机,桌面应用|如何在 GNOME 3 中显示桌面

你如何在 GNOME 3 中显示桌面?GNOME是一个很棒的桌面环境但是它更加专注于在程序间切换。如果你想关闭所有运行中的窗口,仅仅显示桌面呢? 在Windows中,你可以按下WindowsD。在Ubuntu Unity中,可以用CtrlSuperD快捷键。…

计算机远程桌面在什么地方查找,远程桌面连接在哪里 来看看小编是怎么讲解的...

在win7系统中,如果想要实行远程连接,那么就必须要有到远程桌面,那么,win7系统远程桌面连接在哪里呢?现在,小编就给大家讲解一下吧。 1.使用鼠标右键“计算机”图标,选择“属性”打开 2.在打开的系统窗口右…

怎么添加计算机在桌面,怎么在桌面添加我的电脑 - 卡饭网

win7下如何在桌面添加我的电脑等图标 win7下如何在桌面添加我的电脑等图标 win7下如何在桌面添加我的电脑等图标 在安装过显卡等驱动的情况下,在桌面上单击右键,如图示选择“个性化” 紧接着选择更改桌面图标: 出现桌面图标设置的界面:进行设置保存即可。 对于win7家庭普通…

win7桌面的计算机在哪里,win7更改桌面路径,win7桌面文件在哪里

win7系统的桌面是存储在C盘中的,如果系统出现问题无法开机我们在重装系统后一切软件的图标和保存在桌面的文件都将会丢失 标题中我们提到了桌面的路径问题,系统默认桌面是保存在C盘的,那么这显然也会引起一些问题,比如你在桌面上放…

win8.1计算机开启远程,Win8.1系统远程桌面在哪里?

有时候我们可能需要控制别人的电脑或者别人控制我们的电脑来做一些操作,这时候就要用到远程桌面了。可是很多用户不知道远程桌面在哪里?其实很好找到的,下面就由小编教大家找到Win8.1远程桌面吧! 方法一: 在Win8.1桌面…

计算机远程桌面在哪里打开,电脑开启远程桌面的方法

对于使用win7系统的用户来说,并不是所有的人都懂得win7开启远程桌面的方法。我们知道开启远程桌面服务后,可以很方便的远程管理服务器或计算机。给我们的工作学习生活带来很大的便利,那么如果我们想要开启win7系统远程桌面服务的话&#xff0…