149

GitHub - Shu-Ji/wechat_micro_jump_game_hero: 微信小游戏跳一跳辅助程序

 7 years ago
source link: https://github.com/Shu-Ji/wechat_micro_jump_game_hero
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

请勿将此用于任何商业用途,仅供个人使用。

使用此工程带来的后果,由使用者自己承担,与本工程作者完全无关。

克隆、fork、下载,即代表您遵循此声明。

目录结构说明

.
├── docs  # 源码分析
├── game.beautified.js  # 美化后的小游戏源码[移除了 three.js 的库代码]
├── game_js_beautifier.py  # 美化 game.js
├── LICENSE
├── main_cv.py  # 自动跳 opencv 版本
├── main.py  # 自动跳 pillow 版本
├── Pipfile
├── Pipfile.lock
└── README.md

游戏源码分析

请前往源码分析

普通版本(main.py,已废弃):

普通版本

优化版本(main_cv.py):

优化版本

调试时,修改 debug 为 True,真实运行时,设置为 False。停顿时间设置为 2s,如果电脑运算速度太快,保险起见可以设置为 2s。

Android:

  1. adb 截图
  2. 找到小人臀部坐标(hsv 色相紫黑色)
  3. 找到下一桥墩的顶点坐标
  4. 找到下一桥墩的极左/极右点坐标
  5. 计算出下一桥墩的中心点坐标
  6. 从小人臀部到下一桥墩中心点计算出跳远距离
  7. 将距离换算为长按时长
  8. 使用 adb 跳

使用 wda 截图与事件点击,比 adb 快很多。

16.png.canny.png

16.png.debug.png

2018-01-04

由于微信的小游戏的更新,基于背景 hsv 查找极点的方式,对于亮色背景,已经不再适用。

更新为使用轮廓区域获取顶点,再由商高定理计算中心点坐标。

2018-01-01

目的只是找到极点,并不需要二值化,去除相关代码。速度快。

目前以 距离 x 1.5 作为长按时长,基本能跳到目标中心位置。

2017-12-30

去除垂直投影图的方案,使用直接识别背景的方式去除背景,并二值化,以识别“极点”。速度仍然慢。

2017-12-29

第一可用版本,准确性不高,速度慢,使用垂直投影图进行目标查找。

开发环境搭建

笔者环境:

$ uname -a
Darwin rmbp-finn.lan 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64 x86_64

$ python --version
Python 2.7.10

$ python3 --version
Python 3.6.1

$ adb version
Android Debug Bridge version 1.0.39

$ 测试机
小米5

安装 Python 2.7+ 或 Python 3.5+

(可选安装) virtualenv, virtualenvwrapper

安装 adb

先 fork 一份到自己账户。然后:

$ mkvirtualenv wechat_micro_jump_game_hero
$ cdvitualenv
$ git clone ...
$ cd wechat_micro_jump_game_hero
$ echo `pwd` > ../.project
$ pip install pipenv
$ pipenv install

手机连上电脑,确保

$ adb devices

显示了安卓设备。

设备打开跳一跳小游戏,并点击开始,之后:

# 普通版本(使用去除的背景的方式进行极点查找)
$ python main.py

# 优化版本(使用Canny算子找顶点,使用直角定理找极点)
$ python main_cv.py

修改 debug 为 true 将进入启动调试模式。

同时需要修改 fn 变量为想要调试的图片(一般是上一次跳失败的图片,用来调试为什么失败),如 "25.png"。

调试模式中,会打开 fn 指定的图片,并画出相关坐标点,以及背景识别图。(将会打开两个图片用于调试)

根据不同的手机型号(主要是屏幕分辨率)可能需要修改的几个地方:

  1. 请关闭手机的悬浮球,或者将其放置于屏幕最下方中间位置,以防止干扰。
  2. 指定 screenshot_directory 为截图保存路径。程序运行时,可以随时打开此目录查看其中生成的图片。
  3. 函数 find_hero(self) 中小人色取的是紫黑色:self.pixels[x, y] == (56, 56, 97, 255)。不知道不同手机显示的颜色是否一样。
  4. 函数 get_background_hsv(self) 中获取背景色的坐标,代码中为 (10, 800)。此参数是一个大概位于您手机屏幕竖直方向中间的某个点,确保此点一直是背景。大致坐标为(10, self.h * 0.42),即(10, 屏幕高 * 0.42),目前屏幕已经做了自适应,一般无需再设置。
  5. 函数 is_same_color(self, h, s, v, bg_hsv) 关于颜色是否相同的对比,其中的 h 和 s 两个值需要根据情况修改,一般来说,亮背景(灰白、黄色)时大一点点的值效果会好些,暗背景(紫色、蓝色等)时小一点点会好些,代码已经做了一部分的自适应,目前此 hsv 不太适用于粉色。
  6. 函数 get_holding(self) 中距离转换按键时长的系数,以及 max 和 min 中的两个参数,需要自己修改尝试。

Recommend

  • 135

    Android - @zhgqthomas - ### 前言昨天 V2EX 上的一篇通过抓包来获取微信跳一跳源码的文章走红,文章连接点击[这里]( https://www.v2ex.com/t/419056?p=2)我也在通过文章中

  • 210
    • www.cocoachina.com 7 years ago
    • Cache

    微信小游戏跳一跳外挂辅助程序

    website upgrading… 京ICP备110065...

  • 196
    • 掘金 juejin.im 7 years ago
    • Cache

    如何获得微信小游戏跳一跳源码

    前言 昨天 V2EX 上的一篇通过抓包来获取微信跳一跳源码的文章走红,文章连接点击这里 我也在通过文章中的方式进行了抓包,但是并未探测到小游戏的下载连接,可能微信对此已经进行了修复。而且上文中提供的下载连接也显示为 404 的状态码。 虽然抓包未果,但是依然...

  • 199

    微信跳一跳辅助app 仅需安装app无需连接电脑等 支持手动、自动 微信跳一跳辅助app 仅需安装app无需连接电脑等 支持手动、自动 | 已开源 微信跳一跳App助手 现已加入“手动”“自动”...

  • 138

    Page not found · GitHub · GitHub Skip to content...

  • 91

    在微信6.6.1版本中,给用户推送了“玩一个小游戏才是正经事”的首屏小游戏入口,一时间整个朋友圈都在跳一跳。相信很多游戏开发者心痒难耐,想一探究竟。今天就由我和王哲从技术角度给大家科普一下微信小游戏的开发知识,这一系列文章源自我们Co...

  • 59

    【易语言】微信跳一跳辅助源码。详细介绍请移步:http://blog.51cto.com/13334510/2059782

  • 75
    • segmentfault.com 7 years ago
    • Cache

    揭密微信跳一跳小游戏那些外挂

    作者:Hahn, 腾讯高级UI工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 原文链接:

  • 110

    揭密微信跳一跳小游戏那些外挂 未知 2018-01-18 11:43 50631 本着钻研技术的学习态度,我对目前几款比较火的外挂进行了源码分析,总结出了它们的一些破解思路... WeTest 导读 ...

  • 12

    教你用 Python 来玩微信跳一跳 2017 年 12 月 28 日下午,微信发布了 6.6.1 版本,加入了「小游戏」功能,并提供了官方 DEMO「跳一跳」。这是一个 2.5D 插画风格的益智游戏,玩家可以通过按压屏幕时间的长短来控制这个「小人」跳跃的距...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK