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

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

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

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

准备工作:

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 = 1
        y = 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 = 1
        y = 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 + 20

Ellipse (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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信网页机器人1.0 多功能是一款基于微信网页开发的机器人程序,具备多种功能和特点。 首先,该机器人具备智能回复功能。它能够识别用户输入的文字信息,并根据预设的规则和算法进行智能回复。无论是简单的问答,还是复杂的问题,该机器人都能够提供准确和快速的回答。 其次,该机器人还具备自动推送功能。用户可以设置感兴趣的话题或关键词,机器人将会在相关信息发布时自动推送给用户,使用户时刻保持了解和关注。 此外,该机器人拥有定时提醒功能,用户可以设置提醒的时间和内容,机器人将会在指定的时间发送提醒消息给用户,帮助用户合理安排时间和提醒重要事项。 还有,该机器人支持一键订阅功能。用户可以通过机器人订阅感兴趣的公众号或频道,随时浏览最新消息,并与其他订阅用户进行交流和互动。 最后,该机器人提供了一个易语言源码,方便用户进行二次开发和定制。用户可以根据自己的需求和喜好,对机器人的功能进行扩展和优化,使其更好地适应个人使用场景。 总之,微信网页机器人1.0 多功能是一款功能强大、易用灵活的工具。它通过智能回复、自动推送、定时提醒、一键订阅等功能,帮助用户快速获取信息、提高工作效率,并提供了易语言源码,方便用户进行二次开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值