教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式5 V! A% G* c$ V" r1 k: Q' T3 u
这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》
  ^) s1 ~% Z- O* i9 N' @
! k- m" F& |  `; A0 |6 W3 S$ b如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证
2 S& t1 ?4 G  v& O, l; X" S4 o希望不要把分数刷太高,容易没朋友的。。。1 E. X. S! L+ ?, v. ]8 X
工具介绍
1 [3 D* m. r! q- S1 e
    & t5 N# F; l) _
  • Python 2.7
    " k" X/ r/ B! }9 X1 ]4 J% O) ]6 N5 w
  • Android 手机- I. M& b% }+ `. H0 q- W8 X3 X" Q& f
  • Adb 驱动
    " b* [7 G1 B! j7 c7 s
  • Python Matplot绘图
    7 Z: R; p( [' S- C4 h
原理说明
5 ]; Z8 d/ k6 Z
    / o: b- a1 j* ]4 e4 T  m) u
  • 将手机点击到《跳一跳》小程序界面;* E9 K& s( |" c# ~
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来
    ) k: A- |; i! u
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .

    + a' h6 L3 ~# n. b( E6 H% }! a
  • 用matplot显示截图;
    8 C0 e! {2 q. _. x! H
  • 用鼠标点击起始点和目标位置,计算像素距离;
    1 x, |9 w5 d8 k% X6 f" j( [0 \
  • 根据像素距离,计算按压时间;
    $ j; w# B, T# q4 D0 K
  • 用Adb工具点击屏幕蓄力一跳;* @# w7 H& x! o/ w' e2 n) V
adb shell input swipe x y x y time步骤* T1 N/ ^  I2 W$ g- t3 Q8 U

    - C# s3 e& C2 `; \3 c8 P
  • 首先需要有一台Android手机,转至小游戏界面;
    ) Y8 i  i* ]$ f+ ]& t, ^7 O
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);
    ) J& ~, L% W" S4 H
  • 去github clone我的代码,运行 python wechat_jump.py;
    8 X& |, w) }0 t
  • 点击起始和结束点;# [9 V: `4 t6 P; L/ v# J- k
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.% P( `$ \2 y8 S, w$ S3 |
实验结果( c, y" X% [% N8 ]# @2 v/ E
只要有耐心,你就是王者9 S% Y1 d( Y/ B7 K
, X) H) y' }9 E3 N7 [
TODO
. c3 A$ g; v9 I2 `1 b可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

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

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