教你用Python来玩微信跳一跳

[复制链接]
nitenite 发表于 2017-12-30 18:04:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
游戏模式' T5 w( v+ c0 F, F+ h
这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距离。可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。玩法类似于《flappy bird》% b( m" M7 i, j9 b3 y

; ?4 u" S5 g) p! r1 q! L如果能精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃?所以花2个小时写了一个python脚本进行验证  `- R: r1 ?8 J" L
希望不要把分数刷太高,容易没朋友的。。。% A, t4 c4 k7 p4 |" p% |
工具介绍3 N$ i& D; O" N& Q6 T# f; h+ ?
    . K/ T- d7 @7 A1 w
  • Python 2.7- V2 x% J$ P* O6 ~- z4 O, ?
  • Android 手机! S/ L9 `+ {- U# V
  • Adb 驱动: @3 o( B6 M- N+ \; a
  • Python Matplot绘图7 ^% g* ~" Q" x
原理说明
: K" a1 U' R7 Y$ m1 R5 n6 g, G
    % q0 Q# X7 L6 C. _8 J! @) k
  • 将手机点击到《跳一跳》小程序界面;
    9 y9 [! Y, {  S" M* V4 c, w* Q) Y
  • 用Adb 工具获取当前手机截图,并用adb将截图pull上来8 `7 U1 q& m/ m; `  h2 r
adb shell screencap -p /sdcard/1.pngadb pull /sdcard/1.png .
    . G, J3 R7 n; ]  |
  • 用matplot显示截图;1 T4 g3 O; X% ^4 o
  • 用鼠标点击起始点和目标位置,计算像素距离;, A" i) S) M# S  L: e; x
  • 根据像素距离,计算按压时间;
    & O2 B* O3 T  ^. H: j! ^! B
  • 用Adb工具点击屏幕蓄力一跳;
    ( _3 o+ @- X9 h% `! g
adb shell input swipe x y x y time步骤! C, B$ s8 W% R$ h3 t5 a
    5 b: i/ \$ L) I; ]$ o3 F- X& `
  • 首先需要有一台Android手机,转至小游戏界面;
    8 B/ W! |' r0 i  w
  • 用USB线连接电脑(我的是Linux Ubuntu 16.04 x86_64);0 \$ D, c& N! |& [; [
  • 去github clone我的代码,运行 python wechat_jump.py;3 }/ I! y2 }# r7 \1 L: Y# `
  • 点击起始和结束点;
    2 _  c: |" R1 H( {( x8 X
我的屏幕是1920*1080,距离系数为1.35,如果是别的分辨率,暂时需要修改一下代码中的距离系数.
# p# N$ K* i" A3 d8 c实验结果
' K2 b# O( t8 J6 ], X! A, |只要有耐心,你就是王者
! P9 s& i4 H9 Q  U, H7 Z) D- v% m# r8 ~
TODO+ O3 D4 G4 C( G( R* N6 h' @
可以对拉上来的图片进行颜色分割,识别小人和目标中心点,这样就不需要手动点击自动弹跳。事实证明,机器人比人更会玩儿游戏。

本帖子中包含更多资源

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

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