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

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

准备工作:

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

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

  1. C++入门教程:大白话讲解,新手基础篇(附源码及详解、视频课程资料推荐)

    C++ Tutorial C++教程 前言 视频教程 文字教程 集成开发环境(IDE) 编译器 工作原理 学习指南 入门书籍 进阶书籍 算法.竞赛书籍 教程 标准构建 程序解释 第一个C++程序--& ...

  2. 100行微信跳一跳java_安卓版微信跳一跳辅助 跳一跳辅助Java代码

    安卓版微信跳一跳辅助,java实现,具体内容如下 已经看到网上有大神用各种方式实现了,我这是属于简易版ADB命令式实现. 操作方法 1.光标移动到起始点,点击FORM 2.光标移动到目标点,点击TO ...

  3. c语言微信跳一跳辅助开发程序

    一.开发环境 开发环境 使用语言:C/C++ IDE:VS2010+ 其他三方库 EasyX(http://www.easyx.cn/downloads/) ADB(链接: https://pan.b ...

  4. java人脸识别教程_用 Java 实现人脸识别功能(附源码)

    > 整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 引言 远程在家办公的第N天,快要闲出屁了,今 ...

  5. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  6. Java版智慧社区商业级别项目(附源码)

    介绍 HC小区物业管理系统是由java110团队于2017年4月份发起的前后端分离.分布式架构开源项目,有HC小区管理系统后端,HC小区管理系统前端,HC小区管理系统业主手机版和HC小区管理系统物业手 ...

  7. 仿蘑菇街,京东,苏宁易购,海尔商城等33套大气购物商城网站模板,附源码免费下载地址...

    来源 | web前端开发 在很早之前,跟大家分享过很多有关于网站模板的素材资源,有企业网站,也有购物商城,还有后台管理模板,以及大数据页面模板等等. 今天我们再跟大家分享32套商城网站源码,有的是比较 ...

  8. 【C语言】游戏开发:天天酷跑丨完美练手项目 [附源码]

    目录 一.项目说明: 二.项目作用 三.项目技术要求 四.库.宏.主函数说明 五.项目实现 5.1游戏背景的实现 5.2实现Hero奔跑 5.3 实现Hero跳跃 5.4 优化帧等待 5.6使用结构体 ...

  9. Springboot+基于微信小程序的电器商城系统的设计与实现 毕业设计-附源码251453

    Springboot电器商城小程序的开发 摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷 ...

  10. ssm+mysql+基于微信平台的牙科就诊信息管理系统的设计与实现 毕业设计-附源码211157

    小程序SSM牙科就诊信息管理系统. 摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多分类管理之中,他们利用网络来做这个牙科就诊信息管理系统.,随之就产生了"牙科就诊 ...

最新文章

  1. 机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等
  2. C++ class实现顺序队列(完整代码)
  3. 阿里巴巴云原生大数据运维平台 SREWorks 正式开源
  4. JAVA Web学习篇--Servlet
  5. 程序员输入法_解决Pycharm输入法不跟随光标
  6. 畅通工程(并查集模版题)
  7. 三维数据平滑处理_神木市抄数服务多少钱【博通三维】3D打印服务
  8. shell编程三大神器之awk
  9. 汽车行业(车厂)常见英文缩写及其中文含义(不断完善中)
  10. 丸子小程序打通视频号,变现更便捷~
  11. EMC的PCB设计技术。(分层、布局、布线)
  12. Rasa 3.x 学习系列-Rasa X 社区版(免费版) 更改
  13. 响应式网页设计教程:展示响应式设计的基本原理
  14. PMBOK 第六版 识别风险:工具与技术——提示清单
  15. 对象数组根据多个属性排序
  16. php手册 时间戳,PHP时间戳函数总结一览
  17. 长虹变频空调整机不工作维修案例分析
  18. java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题
  19. Axmath 公式编号更新闪退问题-mark
  20. 如何让自己保持学习的欲望

热门文章

  1. 新计算机的word无法输入文字,word打字后面的字消失怎么办
  2. Java8之深克隆与浅克隆
  3. Flume防止重复消费——断点续传
  4. qq里面cap字符_qq字符
  5. 回忆某图,如滔滔江水
  6. bad interpreter问题
  7. 小程序源码:团长头像制作小程序
  8. LVM -逻辑卷管理
  9. mysql 定时调用sp_使用shell脚本调用mysql数据库存储过程,并设置定时任务
  10. windows 用choco 安装nvm