• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.5
软件大小:62.5M
更新时间:9-25

按键精灵iOS版
立即下载

软件版本:1.3.5
软件大小:29.2M
更新时间:06-14

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 12
发新话题 回复该主题

[源码分享] 【紫猫学院】微信跳一跳详细制作图文教程 [复制链接]

1#
前言


这两天微信的跳一跳小游戏火了,我已中毒,幸好可以通过按键精灵帮我解毒
希望大家通过本篇教程的学习,可以制作出属于自己的跳一跳脚本。

思路


游戏玩法很简单,按住一段时间,棋子跳跃一段距离,按住时间越长,跳的越远。所以我们只要能计算出时间与距离的比值,再根据棋子的起点与终点,求出需要跳跃的距离,就可以轻松完成自动化操作了。


比值


游戏没有直接提供按多久跳多远的数值给我们,所以我们要通过玩游戏来计算得到,可以使用Touch命令让脚本模拟操作跳跃,然后修改按住时间得到不同时长的跳跃距离,最后计算出平均比值,也就是速度。
具体步骤如下:
1. 使用Touch 50, 50, 600使棋子往前跳跃,按住坐标可以自己修改
2. 若下一个方块在左边,也就是截图还能看到第一个方块的话,就用抓抓截图,否则重头开始,因为我们要计算距离,必须要有第一个方块坐标。
3. 抓抓截图后,获取起点坐标,也就是第一个方块的中心坐标,再获取棋子底部中心坐标,把这两个坐标与按住的600毫秒数据保存下来。

4. 慢慢修改Touch命令的按住时间,重复上面操作保存不同时间不同距离的数据,比如按住700毫秒时得到两个坐标,按住800毫秒时得到两个坐标等等,数据越多,比值越准确。
5. 由于游戏都是固定45度方向跳跃的,所以我们可以直接通过计算x水平方向的距离来估算按住时间,当然,如果你愿意用勾股定理来计算斜边也是可以的。
6. 将每次计算的比值加起来求平均值,就是棋子跳跃的速度了,下图是只采取了5个数值计算的,可能存在误差,建议收集更多不同时长数据来计算准确速度。


起点


也就是查找当前画面棋子底部中心的坐标,这里无论你使用找图,还是多点找色等各种命令都可以实现的。
如果你使用多点找色,那么第一个点就以棋子底部中心为准,然后取棋子上其他不同点的数据。

如果你使用找图,那么可以截取棋子小角落部分,也可以整个棋子截图后做透明图,要注意的是,找图命令得到的坐标要通过加减计算求出底部中心坐标。


终点


这部分也是最难的地方,查找棋子的落脚点位置。一般人会想通过找图找色的方法,把棋子落脚点找到,但实际这个方案很难实现。
大家注意看游戏的背景,目前游戏背景很简单,没有杂色,另外每次终点方块都是在上方的,所以我们可以通过从左往右,从上往下,取点的颜色与背景色做对比,假如颜色与背景色不同,那么这个点就是我们终点的x水平坐标。如果还要求Y坐标的话,那就是调整方向为从上到下,根据水平x坐标来决定是从左到右还是从右到左。为了加快对比查找速度,我们可以每隔10个坐标点对比检查一次,并且缩小检查范围。


具体步骤如下
1. 使用getpixelcolor 50,100之类的命令获取背景色,并保存到变量中。
2. 使用两个嵌套for循环实现对比范围内的点颜色,注意此处要排除棋子所在范围。
3. 遇到点颜色与背景色不相似的点坐标时,这个点就是我们的终点x水平坐标。

时长


这部分是最简单的了,求出终点x坐标减去起点x坐标的绝对值后,再除以速度比值就是我们要按住的时间,最后使用touch命令模拟按住即可实现。


整理


把上面的代码整理起来,加入循环就可以实现全自动化跳一跳了,下面提供一份在雷电模拟器720x1280x320下的详细代码例子,由于时间有限,所有数据都没有做过优化调整,可能无法获得很高的分数,请大家自行按照上面思路来做一些优化。

//下载并使用紫猫安卓插件https://zimaoxy.com/m/post/zm.about/
Import "zm.luae"
zm.Init

Dim bx, by, x1, y1, x2, y2, backcolor, bsim, scale
//取背景色的坐标90,318,可自由调整
bx = 90 : by = 318
//背景色相似度0.94,可自由调整
bsim = 0.94
//定义扫描与查找棋子的范围31,337,668,904,可自由调整
x1 = 31 : y1 = 337
x2 = 668 : y2 = 904
//距离除以时间的比值,也就是速度,可自由调整
scale = 0.41975

Dim pc1, pc2, p1, p2, t
//采用多点找色来实现查找棋子坐标,可自由调整
pc1 = "623938" : pc2 = "-18|-38|482E2F,8|-112|B28B94,17|-6|543638,-9|-71|5C3C43,-22|0|4F2D2E,6|-68|AF8790,-1|-124|4F373D,-4|-91|473B39,-2|-32|54343F"

Do
KeepCapture

//使用超级多点找色来实现查找棋子坐标
//参数"1-0.9-0.01"表示自动从0.9到1.0范围内选取最佳相似度,可自由调整
//返回值在表p1中,可以用p1["x"], p1["y"]取出坐标
//这里代码也可以替换成官方自带的多点找色命令
p1 = zm.FindMultiColor(x1, y1, x2, y2, pc1, pc2, "显示", "1-0.9-0.01")

//获取当前背景色
backcolor = GetPixelColor(bx, by)

//嵌套循环,让坐标从左到右,从上到下进行变化
//每次坐标距离加10,提高对比速度
p2 = Null
For y = y1 To y2 Step 10
For x = x1 To x2 Step 10
//这里52是指棋子图片的宽度,可自由调整
//目的是不扫描到棋子,因为棋子颜色与背景色也不同
//俩方块太近的时候,棋子可能会高于方块,导致出错,所以需要排除棋子范围
If p1 and not(p1["x"] + 52 >= x >= p1["x"] - 52) Then
//对比指定坐标颜色是否与背景色相似
If CmpColor(x, y, backcolor, bsim) = -1 Then
//如果颜色不相似,则表示找到终点坐标了
p2 = {"x":x, "y":y}
Exit For
End If
End If
Next
If p2 Then
Exit For
End If
Next

//如果p1和p2都是有值的,表示起点与终点都获得了,可以计算时长了
If p1 and p2 Then
//求出起点与终点的水平距离,然后除以速度,得到按住的时长
t = Abs(p1["x"] - p2["x"]) / scale
Touch 200, 200, t
End If
ReleaseCapture

//延时2秒钟,保证棋子落到目的地并且停留一段时间了
Delay 2000
Loop

最后编辑紫猫 最后编辑于 2018-01-01 21:15:31

【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


2#

代码中的数据未经过优化,可能只能获得两三百分,请大家自行优化数据,争取拿高分。
关于背景色对比取方块坐标这一步,教程中采用的是通俗易懂的cmpcolor命令实现的,但是这里如果使用hsv对比将会更加准确,了解hsv格式颜色的同学,可以使用紫猫插件中的rgb转hsv颜色功能实现

最后编辑紫猫 最后编辑于 2018-01-04 14:28:13

【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


3#

支持

4#

终于通过审核拉~


【紫猫编程学院】火热招生中,按键精灵独家授权导师授课。

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220

紫猫学院免费教程

加入交流QQ群: 7333555


5#

哈哈,这个好玩的

6#

看看怎么实现的

7#

看看学学

8#

谢谢楼主呀~

微信公众号: 脚本天堂 每天分享按键精灵小知识哦~
9#

好,谢谢分享

10#

现全自动化跳一跳了

11#

看下

12#

争取拿高分

13#

の人合计金额是大法官发热外人根本v

14#

谢谢分享

15#

看看教程

16#

学习一下

17#

iptv是什么

18#

】微信跳一跳

19#

回复学习 学学

20#

干货,前来看看

发新话题 回复该主题