微信跳一跳脚本制作思路

一、由来及游戏介绍

前段时间微信小游戏“跳一跳”火遍朋友圈,尤其深得妹子喜爱,刷分上榜排名攀比顺袭,昨天一兄弟跟我说想刷刷分,一听是要用来撩妹,@!#¥……%@(省略一万字),准备着手做个脚本,我只能帮你这么多了。

写完把测试效果发朋友圈直接炸了很多小伙伴来问怎么做的,于是写一份简单的开发思路给大家参考。

游戏是一款玩法很简单的小游戏,玩家需要目测两个物体之间的距离,然后根据距离和手感控制点击屏幕的时间长度,小人就会跳动相对应的距离,每次准确跳上物体即可得分,跳在正中心得奖励分,掉下去游戏即结束。

二、手工玩耍

先手动试玩几波,得分2位数结束。(图片随便截的,其实笔者自己玩也能几百分啦,并不是手残党)

这里写图片描述

三、观察总结

在游戏过程中,通过仔细体验+观察不难发现

  1. 小人的跳跃方向只有两种情况,这就给我提供了解决方案的思路
    • 当小人在屏幕左下角时,它是朝着右上角跳跃的
    • 当小人在屏幕右下角时,它是朝着左上角跳跃的
      这里写图片描述
  2. 小人的跳跃距离与按下屏幕时间的长短有着某种函数关系
四、理清解决方案思路

很明显如果我们要设计脚本,那么要解决这几个问题

  1. 通过图像分析找到小人在屏幕中的位置(在屏幕中的坐标)
  2. 通过图像分析找到下一个物体的中心(小人要跳到目标坐标)
  3. 算出小人要跳的距离,并找出距离与按压屏幕时长的函数关系,并根据按压时长,调用底层模拟触屏接口(其他办法都可以)实现屏幕延时点击,使小人准确跳到目标位置
五、逐步实现

首先说明一下笔者的开发环境

  1. 硬件
    • PC(windows 7 -64)
    • 小米5s(Android 7.0)
  2. 软件
    • 叉叉开发IED for windows
    • 叉叉开发助手 for android
    • Photoshop cc
    • Markman
  3. 编程语言
    • Lua
1.通过图像分析找到小人在屏幕中的位置(在屏幕中的坐标)

通过观察不难发现小人的颜色是固定的,静止状态时的形状也是固定的,那么好办了,如图所示,使用IED的抓图工具选取小人的十个点作为找色(找色就是读取屏幕中某个点的颜色,并做进一步判断和处理,具体读者可以去叉叉开发者平台自行学习)位置,其中箭头所指向的点即为小人起点坐标
这里写图片描述
使用叉叉API提供的findcolors接口,传入这十个点的颜色坐标,如果手机屏幕中出现这10个点,即判定找到了小人所在位置,并且箭头所指点的左边即为小人所在坐标中心,保存为position

//函数功能为获取小人中心位置
function getPos()
    local pX,pY
    //findcolors里的参数是IDE抓图工具生成的十个点以及其颜色参数
    pos= findColors({
  0, 0, 1079, 1919},"0|0|0x383862,-36|-2|0x2d2d4b,30|-2|0x383654,-25|-99|0x3a3d55,15|-99|0x8277a3,-31|-163|0x373842,21|-163|0x595280",95, 0, 0, 0)
    if #pos ~= 0 then
        if pos[1].x<540 then
            //tag为小人所在屏幕位置的左右标记
            tag = 0
        else
            tag = 1
        end
        pX = pos[1].x
        pY = pos[1].y
    else    
        pX = 0
        pY = 0
        tag = 0
    end
    sysLog("Pos: "..pX.." "..pY.." "..tag)
    return pX,pY,tag
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值