python链接安卓 跳一跳
借鉴: 一百行代码实现微信跳一跳
之前需要安装adb
开启服务:
adb nodaemon server
显示设备:
adb devices
代码:
import math import os import tempfile import time from functools import reduce from PIL import Image BACKGROUND_POS = (, ) DISTANCE_TO_TIME_RATIO = 1.35 SCREENSHOT_PATH = tempfile.gettempdir() + "/screenshot.png" def calculate_jump_distance(): im = Image.open(SCREENSHOT_PATH) background_rgb = im.getpixel(BACKGROUND_POS) role_pos_list = None vertex1_pos = None block_background_rgb = None vertex2_pos = None role_line_flag = True for y in range(BACKGROUND_POS[], im.height): if role_pos_list and role_line_flag: break role_line_flag = True vertex2_line_flag = True for x in range(BACKGROUND_POS[], im.width): current_rgb = im.getpixel((x, y)) next_rgb = im.getpixel((x + , y)) if x + < im.width else (, , ) # 识别顶点1 if x > BACKGROUND_POS[] and y > BACKGROUND_POS[] and not vertex1_pos and not is_similar(background_rgb, current_rgb) and is_similar(current_rgb, next_rgb): vertex1_pos = (x, y) block_background_rgb = current_rgb # 识别顶点2 if block_background_rgb and vertex2_line_flag and is_similar(current_rgb, block_background_rgb, ): vertex2_line_flag = False if vertex2_pos: if x < vertex2_pos[] and vertex2_pos[] - x < and y - vertex2_pos[] < : vertex2_pos = (x, y) else: vertex2_pos = (x, y) # 识别小人 if is_part_of_role(current_rgb): if role_line_flag: role_pos_list = [] role_line_flag = False role_pos_list.append((x, y)) if len(role_pos_list) == : raise Exception('无法识别小人位置!!!') pos_sum = reduce((lambda o1, o2: (o1[] + o2[], o1[] + o2[])), role_pos_list) role_pos = (int(pos_sum[] / len(role_pos_list)), int(pos_sum[] / len(role_pos_list))) destination_pos = (vertex1_pos[], vertex2_pos[]) return int(linear_distance(role_pos, destination_pos)) def is_part_of_role(rgb): return < rgb[] < and < rgb[] < and < rgb[] < def linear_distance(xy1, xy2): return math.sqrt(pow(xy1[] - xy2[], ) + pow(xy1[] - xy2[], )) def is_similar(rgb1, rgb2, degree=): return abs(rgb1[] - rgb2[]) <= degree and abs(rgb1[] - rgb2[]) <= degree and abs(rgb1[] - rgb2[]) <= degree def screenshot(): os.system("adb shell screencap -p /mnt/sdcard/screencap.png") os.system("adb pull /mnt/sdcard/screencap.png {} >> {}/jump.out".format(SCREENSHOT_PATH, tempfile.gettempdir())) def jump(touch_time): os.system("adb shell input swipe 0 0 0 0 {}".format(touch_time)) def distance2time(distance): return int(distance * DISTANCE_TO_TIME_RATIO) if __name__ == '__main__': count = while True: screenshot() distance = calculate_jump_distance() touch_time = distance2time(distance) jump(touch_time) print("#{}: distance={}, time={}".format(count, distance, touch_time)) count += time.sleep()
python链接安卓 跳一跳的更多相关文章
- python如何玩“跳一跳”!(windows安桌版本请进!)
最近"跳一跳",很火爆,有木有? 看了一下网上的教程,动作搭建了一下环境,就可以用脚本自动跑起来啦!!! 下面说一下android手机的实现过程: 首先,是python环境的搭建 ...
- 利用Python玩微信跳一跳
创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...
- 【辅助工具】Python实现微信跳一跳
最近迷上了微信跳一跳小游戏,正好也看到知乎上有大神分享了技术贴,我也参考了好多资料,原理就是通过abd命令截取图片,python计算两个点距离,然后转化按压时间,让电脑来完成游戏.我花了很长时间才把程 ...
- Python操作微信跳一跳
“跳一跳”这个东西还是今天刚接触到的,看到了python群中有人再问“微信跳一跳的外挂有人写了没”,“早就有了”,“github”,“等着出个更详细的教程教程没看懂,主要没有用过adb”. 不过没关系 ...
- Python版本微信跳一跳,软件配置
一.安装python3的环境: 直接从python官方网站下载python3的安装包,直接安装. 记得将python3放到PATH环境变量中,安装的过程中在该配置地方打钩就可以了. 如果安装的过程中出 ...
- 使用python编写微信跳一跳的自动脚本
实现思路: 调用adb命令,截图 寻找小小人的底部中心点role(从下到上扫描,直到找到小小人相同像素的点,至于小小人像素点rgb是什么,可以使用photoshop查看) 寻找棋盘最高点top,然后寻 ...
- Python 帮你玩微信跳一跳 GitHub Python脚本
前言想自己搞游戏小程序的 在github 有人已经利用 python程序, 通过adb 获取不同型号安卓手机的系统截图,然后通过计算小人与目标位置距离之后得到准确的触摸时间,再通过 开发者模式里的 a ...
- PYTHON 实现的微信跳一跳【辅助工具】仅作学习
备注原地址:https://my.oschina.net/anlve/blog/1604163 我又做了一些优化,防止WX检测作弊 准备环境: Windows 10安卓手机,源码中有适配ios,然后链 ...
- 微信跳一跳Python辅助无需配置一键操作
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8350329.html 邮箱:moyi@moyib ...
随机推荐
- win10安装ubuntu子系统配置
# 更改apt源 cat > /etc/apt/sources.list <<'END' #阿里云 deb http://mirrors.aliyun.com/ubuntu/ tru ...
- c# 小票打印
c# 在进行小票打印时大致有三种方法. 1. 使用水晶报表进行打印.可以参考:https://www.cnblogs.com/aitong/p/10717786.html 2. 在 PrintDocu ...
- python+selenium打开浏览器报错问题
报关键字,升级selenium版本 若打开IE浏览器,停在IE界面,无法跳转对应的地址,设置一下IE的页面缩放,设置为100%
- 读取P12格式证书的密钥
不想存储p12证书内容,只想存储证书密钥,可通过以下实现读取证书的密钥出来: package com.zat.ucop.service.util; import org.apache.commons. ...
- pip升级最新版本
1.如果是python2.7输入以下指令 python -m pip install --upgrade pip 2.如果是python 3.+输入以下指令 python3 -m pip instal ...
- vue + typescript 项目起手式
https://segmentfault.com/a/1190000011744210 2017-10-27 发布 vue + typescript 项目起手式 javascript vue.js t ...
- EF 连接到 Azure-SQL
using Autofac; using Autofac.Integration.Mvc; using System; using System.Collections.Generic; using ...
- ASP.NET Core项目中新增和删除的内容
最新一版的.NET几经改名,最终得到了.NET Core这个高大上的名称,相应的ASP.NET MVC也跟着提供了ASP.NET Core MVC版本. 在.NET Core没有稳定名称时,叫做MVC ...
- [转]微信小程序填坑之路之使用localhost在本地测试
本文转自:http://www.wxappclub.com/topic/798
- Full postback triggered by LinkButton inside GridView inside UpdatePanel
GridView inside of a UpdatePanel,get the button to trigger a partial postback <asp:ScriptManager ...