教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式
2 {0 j3 {; U" }这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》
  N3 u6 v% W9 Z$ P% {6 u) \2 i; k7 \+ O/ E: z% P2 D( ~/ E9 r
如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证
) d7 A* k- E6 R希望不要把分数刷太高,容易没朋友的。。。
5 @4 R; y' ^. L工具介绍
" l9 ?: K  z% k& C" p2 D
    2 o- |. y; Q8 x5 |! C/ i
  • Python 2.7
      c. Q" _9 ^1 @2 k3 |8 I" j
  • Android 手机7 @  ^3 J2 b! H4 s2 [0 j3 p4 {
  • Adb 驱动
    3 ]' Q9 W. z+ I, `- S' K  F6 K7 m. Z& _
  • Python Matplot绘图; n7 G) }& w7 L0 C- c: B! r
原理说明
& p, B' c- o; b/ n/ G: k" q
    - q! w0 {& r/ ~- n& C0 w
  • 将手机点击到《跳一跳》小程序界面;
    - e& U6 b# M9 ~0 j1 o( k
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来
    $ t! C# X5 _& \8 l- |
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .

    & U5 ]) J' M  v
  • 用matplot显示截图;* H4 y& H: @% G% K* N9 g: i5 U
  • 用鼠标点击起始点和目标位置,计算像素距离;
    3 X+ \& F5 U, y$ Q- L
  • 根据像素距离,计算按压时间;
    / Z" m: e: j! C# L
  • 用Adb工具点击屏幕蓄力一跳;
    " H/ `, a. T" G5 X+ d
adb shell input swipe x y x y time步骤& U- m: ]. g8 T$ q
    2 u; K; H- I' [# q% Q0 n* J% x
  • 首先需要有一台Android手机,转至小游戏界面;1 c. n& @; f  [$ v
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);- q8 _5 Y8 l5 s) K8 W
  • 去github clone我的代码,运行 python wechat_jump.py;2 L" ^# b/ w; [, h, }
  • 点击起始和结束点;; B5 N/ J8 E" m' e) j
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.9 T, R" b$ Z4 s
实验结果$ o6 }% k' B) z4 L; c( U) a
只要有耐心,你就是王者
7 ]6 F. N' r, L0 ]7 J7 Q. q, V
& J2 O6 Z5 U" [/ q4 V% T$ gTODO8 t! n3 m' R( [* d  ^3 O
可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

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

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