首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员把玩跳一跳

前段时间,微信跳一跳风靡一时。大家大概也都多少玩了一下,当然也发现了不少人分数奇高,看着就不正常。本期节目,我们就从程序员的角度聊一聊怎么涨分。

我们面临的问题是:使用自动化代替人工,从而去除各种估计误差并将游戏无限的玩下去,以获得超高的分数。

回忆我们的玩法,大体分为以下三个步骤:

1.观察手机屏幕,看到自己操控的小人和想要跳过去的方块。

2.估算小人和方块的距离。根据估算得到的距离,估计按压屏幕时长。

3.使用手指按压预期的时长。

在问题分解后,我们再来看看,如何针对这三个步骤下手。

首先,针对截屏,办法有很多。可以手动操作,可以使用软件,也可以直接使用开发者命令。作为一个移动开发,当然选择使用开发者命令。

其次,在获得了一堆图片之后,有三种思路来解决距离计算并转换到按压时长估计的问题。第一个是人工,上游标卡尺即可。第二个是图像搜索算法,简单的说,就是通过图像处理的一堆方式,包括灰度化、轮廓提取等进行暴力搜索,得到小人和方块的位置,从而计算出距离。只不过,这样的做法比较暴力,开销很大。投机取巧的办法是,以跳到中心后的小白点提示为搜索目标,不再搜索方块,这样能够很好的提高性能。

这两种方式都通过确定的距离从而通过函数换算得到按压时间。

第三个思路是使用人工智能的办法。即不再人工提取图像的特征并实现特定的搜索算法,改为将图像及按压时间作为训练集给到神经网络。经过神经网络的计算,当输入一个特定图片的时候(游戏场景),就可以得出一个合情合理的按压时间。

最后一步,也就是模拟人类按压屏幕的操作。从比较原始的按键精灵,再到开发者工具,再到机械手臂模拟,都是可行的。

最终,面对分解的问题并逐一解决后,自由选择自己擅长的解决方案并最终组合在一起,就形成了你自己的跳一跳“小助手”。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222B07DKK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券