教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式3 i3 c0 O+ V; K1 k/ J9 Q8 T9 v
这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》
/ u: ^( E0 {5 H9 ]/ F* s5 s6 D3 f8 N/ H  Q5 y: r* v
如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证
$ A& W1 ~2 n! j% W希望不要把分数刷太高,容易没朋友的。。。8 v4 z6 ]9 J+ g* J$ S# w
工具介绍1 S1 u3 P8 V, {0 ]
    0 t/ v$ ]2 b4 Y- ?
  • Python 2.76 b# E9 \1 v: ~. P! \6 ]
  • Android 手机8 I6 }+ f% j2 K! F) }& }
  • Adb 驱动8 D) ~! ~8 W, o+ @
  • Python Matplot绘图
    9 i+ g' l: ]5 e9 }
原理说明
' ]( z8 I4 g; [& r" ]! e

    - q% B1 c! O5 v! b  E/ H
  • 将手机点击到《跳一跳》小程序界面;
      m8 z2 z# G/ m7 C
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来6 v6 }" B0 L! w
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .
    ) Y9 ^* Z8 u" m& L, Q
  • 用matplot显示截图;
    1 Z& \& k7 I+ p* ]* B1 G, m" ]( F
  • 用鼠标点击起始点和目标位置,计算像素距离;1 k/ F: z+ a: H3 k1 w4 s. a
  • 根据像素距离,计算按压时间;4 f. j6 n; F8 c& _2 e7 N
  • 用Adb工具点击屏幕蓄力一跳;& ~$ |. p6 s! J4 u. o, D& |! d
adb shell input swipe x y x y time步骤
; W3 r, d% P) J' R3 u( x$ k3 e

    $ m- J2 y# [" `* Y; A9 A
  • 首先需要有一台Android手机,转至小游戏界面;8 o+ _5 j# Q) d! a* p! e6 [3 e
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);) p& D/ e# _. I
  • 去github clone我的代码,运行 python wechat_jump.py;
    8 s# Y7 F# N* c# K' Z
  • 点击起始和结束点;
    : Y; C" q. i. Y  K! A! S
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.
7 q' {0 Q. S9 s6 m1 S7 W* A实验结果
% y% B. P7 L, S; U" I; f只要有耐心,你就是王者
9 Z( O2 N5 r# }) s) h' d. y" [' j7 z9 j" M. t+ N* G  i4 C' r/ c
TODO4 m  q* Z* `. @
可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

精彩评论1

cornil 发表于 2017-12-30 19:04:35 | 显示全部楼层
哥们 转载也要注明作者吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
推荐阅读更多+
阅读排行更多+
用心服务创业者
0851-88611148
周一至周五 9:00-18:00
意见反馈:admin@0851life.com

扫一扫关注我们

Powered by 童码少儿编程 X3.4© 2001-2013 0851life Inc.|网站地图