教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式
/ w; F9 v2 k# [0 ?% o' u$ R4 ^+ ~( D这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》# S8 i% g! z" D8 y  _- G4 R

1 i6 Z, [6 N8 S# j  K- R7 ~0 T如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证/ G/ \1 c' u1 u% m
希望不要把分数刷太高,容易没朋友的。。。5 S. p, g& k" d! T5 X/ K
工具介绍6 T$ X! E# b7 @" d( y% z7 ?' I4 G
    , [$ N. e" E/ T  d( H! ?
  • Python 2.7$ b$ F& O" Y7 E5 a
  • Android 手机
    ! c, r) }; y6 d" ]1 I2 m  E$ w$ ]( X
  • Adb 驱动
    / V7 |9 P' u9 Z; T0 [; q/ @& }
  • Python Matplot绘图; P/ x( B/ U( |2 h/ o
原理说明
( w4 S% ~% C+ j* u" S/ K4 i3 [
    8 V' h6 O) D/ t0 a  ~. H
  • 将手机点击到《跳一跳》小程序界面;
    : r# r. w3 \4 ^5 R! o3 Y) ?
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来
    6 J# x7 j8 G2 a1 I8 }
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .
    % Q% `7 G, r& S/ h' J8 `
  • 用matplot显示截图;" c' ?$ c& @" v
  • 用鼠标点击起始点和目标位置,计算像素距离;; k9 n& t9 v! ^8 A1 V+ c, e6 p6 X
  • 根据像素距离,计算按压时间;7 O: T, `% i5 ^; T
  • 用Adb工具点击屏幕蓄力一跳;
    - h( E1 k# H2 A( C! ]# [
adb shell input swipe x y x y time步骤: s* x  P; K7 v& B

    : D& e; \& D) k6 n8 \7 h
  • 首先需要有一台Android手机,转至小游戏界面;% t: e, I8 _, `9 P- I; O. F
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);
    ( V' o% v/ Q* |" L" e
  • 去github clone我的代码,运行 python wechat_jump.py;: ~6 \3 Q8 w' a4 O
  • 点击起始和结束点;
    & ^5 z6 @* X0 r" z0 Q, w
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.$ Q" s' B; _& e3 b( ?
实验结果; n6 l! m# T3 Y0 j
只要有耐心,你就是王者! m. q7 ?* S  ^2 t! E/ G+ a' S" ?
% z' r& R- T( x
TODO% ]' x+ d" _5 K( u
可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

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

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