教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式  u1 k5 o2 P' g; |5 K2 A0 I. c
这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》
% U! j4 M$ R  q( s( m$ Z- y; C4 C1 o8 z$ l$ n" Z: n  Y
如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证
; D2 V+ M: h" q/ [% o3 ]: g希望不要把分数刷太高,容易没朋友的。。。
5 C! H  H4 ]6 \: E; m0 ~工具介绍9 c7 T! N* h) \; [  A* c

    ! ]9 l& n/ D, Q( j: w+ X0 R
  • Python 2.7/ G3 Q/ r4 R( N+ {% C
  • Android 手机4 l+ p2 q6 q: V, a$ w
  • Adb 驱动) Q8 _/ `+ @$ |  H. J' c1 R4 \
  • Python Matplot绘图
    + S& C6 \# A6 h3 [1 T
原理说明
5 z: g7 a) B& b  ?$ I. _

    & Y8 Z+ Y, ^' |- Y# {
  • 将手机点击到《跳一跳》小程序界面;  }4 Q  H+ X6 R( m, J! T
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来
    6 d; P7 u8 y/ e% V
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .
    1 g1 P, G; e; f
  • 用matplot显示截图;( U5 g# E! k) U2 y: }
  • 用鼠标点击起始点和目标位置,计算像素距离;
    ' s: h+ v6 ?' A
  • 根据像素距离,计算按压时间;* W: q; `1 \9 u' }, \
  • 用Adb工具点击屏幕蓄力一跳;, S' f" C1 O+ M# z# D" t5 q
adb shell input swipe x y x y time步骤
2 |$ A& l3 ~! T# s3 I% K" A
    3 _) ~( f* J# L- E( d$ [( ~( M* f
  • 首先需要有一台Android手机,转至小游戏界面;
    " F% ^/ S) F/ q
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);8 v# H* y! N7 D$ b: c, H* q3 J
  • 去github clone我的代码,运行 python wechat_jump.py;
    ) `: o, a2 N; _9 c
  • 点击起始和结束点;: r; ~( K2 Z0 E/ u' ?
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.. B6 {) ?; ]) Y" d
实验结果
- T% ~; e3 I$ t, _只要有耐心,你就是王者
1 |( V' e7 h  I6 H, s' P( [  G3 e6 S, n& c' I8 M- u6 Q0 p* ^
TODO( p/ e# K7 B. P2 ~) Y1 x+ y
可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

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

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.|网站地图