微信跳一跳

作者: 菜鸟H | 来源:发表于2018-04-12 19:38 被阅读0次

代码

init(0, 0)

local screenWidth, screenHeight= getScreenSize();

local distanceTimeRate = 1.32

local targetPositionOffset = screenHeight * 0.013

function Touch(x, y, milliSecond)

    touchDown(x, y)

    mSleep(milliSecond)

    touchUp(x, y)

end

function main()

dialog("请在5秒内打开游戏,并点击开始按钮", 0);

mSleep(5000)

DoLoop()

end

function DoLoop()

for i = 1, 1000 do

  keepScreen(true); 

  if DoJump() == false then

  keepScreen(false);

  break

  end

  keepScreen(false);

  mSleep(2500)

end

end

function DoJump()

local x, y = GetCalcSelfPosition()

if x == -1 or x == 0 then

  return false

end

local endX = screenWidth -- 1080 1920

local endY = screenHeight * 0.7

local startX = 0

local startY = screenHeight * 0.2

if x < screenWidth / 2 then

  startX =  screenWidth / 2

else

  endX = screenWidth / 2

end

local targetX, targetY = GetTargetPosition(startX, startY, endX, endY)

local distance = math.sqrt( (x - targetX) * (x - targetX) + (y - targetY) * (y - targetY) )

local pressTime = CalcHoldTime(distance)

Touch(100,100, pressTime)

return true

end

function GetCalcSelfPosition()

x,y = findMultiColorInRegionFuzzy( 0x38365e, "-16|-6|0x35335a,13|-5|0x39375f", 98, 0, 0, screenWidth, screenHeight)

return x, y

end

function GetTargetPosition(startX, startY, endX, endY)

local step = 3

local r, g, b, rr, gg, bb

for y = startY , endY, step do

  r, g, b = getColorRGB(1, y)

  for x = startX, endX , step do

  rr, gg, bb  = getColorRGB(x, y)

  if isColor(r, g, b, rr, gg, bb, 98)  then

    r = rr

    g = gg

    b = bb

  else

    return x, y + targetPositionOffset

  end

  end

end

return -1, -1

end

function isColor(rr, gg, bb, r, g, b ,s)

    local fl,abs = math.floor,math.abs

    s = fl(0xff*(100-s)*0.01)

    if abs(r-rr)<s and abs(g-gg)<s and abs(b-bb)<s then

        return true

end

return false

end

function CalcHoldTime(distance)

return distance * distanceTimeRate

end

main()

如果脚本跑的并不准确,可以修改参数

distanceTimeRate: 数字越大表示蓄力时间越长

targetPositionOffset: 表示方块最上方的点,距离中心点的偏移

如果还是不行的话,那就算了吧...

思路

1.确定自己的当前位置

直接查找像素就可以了

2.确定目标点位置

可以通过自己当前的位置判断一个大致的范围。

然后通过从左上,到右下角,依次遍历像素。找到方块最上方的像素点。

然后把y + 上一个大概的值来确定。

3.距离与时间转换

游戏的公式是线性的,直接乘以系数就可以了

使用方法

**必备条件:root了的android手机**

Android手机安装触动精灵

左上角Wifi传输

复制上述代码(直接手机新建脚本复制,会导致代码格式变乱,没法运行,得通过电脑wifi传输等方式来传输!脚本放在目录TouchSprite/lua/下,文件名可以取为main.lua)

勾选该脚本

点击右侧菜单,点击立即运行(按照提示进行即可)

需要优化的点

0. 并没有去精确的识别位置

1. sleep函数并不精确,需要一个更加精确的方式来控制

2. 不同分辨率的屏幕,并没有做完美的适配(我的是1080 * 1920)

3. 距离时间的比率,不应该粗暴的用一个值去控制,应该用两个值去分别乘以x,y的距离,然后再算距离(这得看游戏画面本身的屏幕适配是如何做的)

4. 性能差的机型,跑得并不稳定(我用红米2,跑了大概10次,最高跑到2000多分,最低只跑了几百分),这有一部分是因为“优化点 1”导致的。

5. ...

其它的方式:

除了手动模拟操作,应该还可以直接截取网络请求,通过篡改分数来达到目的。

(不过感觉这样做的话,就没有了好看的视觉效果...)

相关文章

  • 小程序大变化

    说到微信小程序,大家可能首先会想到“跳一跳”,的确,跳一跳的火爆,一下打开了微信小程序对外的窗口。当然,跳一跳只是...

  • 微信小游戏「跳一跳」高分秘籍,轻轻松松排第一

    微信更新的 6.6.1 版本,启动页面重点推荐了小游戏「跳一跳」。 玩法说明 在微信小游戏「跳一跳」游戏中,你需要...

  • 原来微信《跳一跳》也可以用Python玩~

    微信更新的 6.6.1 版本突然也开放了小游戏,微信启动页面还重点推荐了小游戏「跳一跳」。 跳一跳 玩家需要「按住...

  • 微信跳一跳

    代码 init(0, 0) local screenWidth, screenHeight= getScreenS...

  • 微信跳一跳

    微信跳一跳这个游戏刚出来时候火遍了朋友圈,现在热度还一直不减,前两天GF让我帮她刷分,找了个脚本用起来感觉不错,在...

  • 微信跳一跳

    1、 人就像弹簧,被压的越低,跳的越远 2、 人生没有回头路,每一步都要深思熟虑 3、 步子太大容易扯到蛋;胆子太...

  • 微信跳一跳

    最近微信跳一跳可谓非常的火,各种辅助外挂也是层出不穷,但是绝大多数辅助都是需要安卓设备root后才能使用的,有没有...

  • 微信跳一跳

    起因 微信刚刚更新了一个版本,主推了一个叫跳一跳的小程序。蹲坑完了2小时,完了300多点,站都站不起来。。。 上网...

  • 跳一跳小游戏贴膜使用说明

    还有相关详细文章见以下: 微信跳一跳深度解密(上篇)——隐藏在游戏里的移动轨迹 微信跳一跳深度解密(下篇实战篇):...

  • 分析别人是如果利用微信小游戏做到月入过万的

    微信小程序写的小游戏相信大家天天都被刷屏,有微信跳一跳,飞刀手,弹一弹等等等等。。。 微信跳一跳当时火起来的时候大...

网友评论

    本文标题:微信跳一跳

    本文链接:https://www.haomeiwen.com/subject/nomfkftx.html