微信跳一跳python代码_微信跳一跳python程序
#源码下载地址:https://files.cnblogs.com/files/cnfan/jump.rar
importosimportcv2importnumpy as npimporttimeimportrandom#使用的Python库及对应版本:#python 3.6#opencv-python 3.3.0#numpy 1.13.3#用到了opencv库中的模板匹配和边缘检测功能
defget_screenshot(id):#os.system('adb shell /system/bin/screencap -p /sdcard/screenshot.png')#获取当前界面的手机截图
#os.system('adb pull /sdcard/screenshot.png d:/fan/screenshot.png')#下载当前这个截图到当前电脑当前文件夹下
os.system('adb shell screencap -p /sdcard/%s.png' %str(id))
os.system('adb pull /sdcard/%s.png .' %str(id))defjump(distance):#这个参数还需要针对屏幕分辨率进行优化
press_time = int(distance * 1.35)#生成随机手机屏幕模拟触摸点
#模拟触摸点如果每次都是同一位置,成绩上传可能无法通过验证
rand = random.randint(0, 9) * 10cmd= ('adb shell input swipe %i %i %i %i' +str(press_time)) \% (320 + rand, 410 + rand, 320 + rand, 410 +rand)
os.system(cmd)print(cmd)defget_center(img_canny, ):#利用边缘检测的结果寻找物块的上沿和下沿
#进而计算物块的中心点
y_top = np.nonzero([max(row) for row in img_canny[400:]])[0][0] + 400x_top=int(np.mean(np.nonzero(canny_img[y_top])))
y_bottom= y_top + 50
for row inrange(y_bottom, H):if canny_img[row, x_top] !=0:
y_bottom=rowbreakx_center, y_center= x_top, (y_top + y_bottom) // 2
returnimg_canny, x_center, y_center#第一次跳跃的距离是固定的
jump(530)
time.sleep(1)#匹配小跳棋的模板
temp1 = cv2.imread('temp_player.jpg', 0)
w1, h1= temp1.shape[::-1]#匹配游戏结束画面的模板
temp_end = cv2.imread('temp_end.jpg', 0)#匹配中心小圆点的模板
temp_white_circle = cv2.imread('temp_white_circle.jpg', 0)
w2, h2= temp_white_circle.shape[::-1]#循环直到游戏失败结束
for i in range(1000):
get_screenshot(0)
img_rgb= cv2.imread('%s.png' %0, 0)#如果在游戏截图中匹配到带"再玩一局"字样的模板,则循环中止
res_end =cv2.matchTemplate(img_rgb, temp_end, cv2.TM_CCOEFF_NORMED)if cv2.minMaxLoc(res_end)[1] > 0.95:print('Game over!')break
#模板匹配截图中小跳棋的位置
res1 =cv2.matchTemplate(img_rgb, temp1, cv2.TM_CCOEFF_NORMED)
min_val1, max_val1, min_loc1, max_loc1=cv2.minMaxLoc(res1)
center1_loc= (max_loc1[0] + 39, max_loc1[1] + 189)#先尝试匹配截图中的中心原点,
#如果匹配值没有达到0.95,则使用边缘检测匹配物块上沿
res2 =cv2.matchTemplate(img_rgb, temp_white_circle, cv2.TM_CCOEFF_NORMED)
min_val2, max_val2, min_loc2, max_loc2=cv2.minMaxLoc(res2)if max_val2 > 0.95:print('found white circle!')
x_center, y_center= max_loc2[0] + w2 // 2, max_loc2[1] + h2 // 2
else:#边缘检测
img_rgb = cv2.GaussianBlur(img_rgb, (5, 5), 0)
canny_img= cv2.Canny(img_rgb, 1, 10)
H, W=canny_img.shape#消去小跳棋轮廓对边缘检测结果的干扰
for k in range(max_loc1[1] - 10, max_loc1[1] + 189):for b in range(max_loc1[0] - 10, max_loc1[0] + 100):
canny_img[k][b]=0
img_rgb, x_center, y_center=get_center(canny_img)#将图片输出以供调试
img_rgb = cv2.circle(img_rgb, (x_center, y_center), 10, 255, -1)#cv2.rectangle(canny_img, max_loc1, center1_loc, 255, 2)
cv2.imwrite('last.png', img_rgb)
distance= (center1_loc[0] - x_center) ** 2 + (center1_loc[1] - y_center) ** 2distance= distance ** 0.5jump(distance)
time.sleep(1.3)
微信跳一跳python代码_微信跳一跳python程序相关推荐
- python微信公众号秒杀代码_微信跳一跳辅助python代码实现
微信跳一跳辅助python代码实现 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 微信跳一跳辅助python代码实现.txt ] (友情提示:右键点上行txt文档 ...
- 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法
下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...
- pycharm写python代码_使用pycharm写python代码的一些提高效率的技巧(持续更新)-Go语言中文社区...
这篇博客主要是用来记录自己在学习pycharm时发现的一些能够提高编写python代码效率的小技巧. 1.问题:在代码很多的情况下,调用函数时想看看函数的参数以及函数内容,按ctrl+鼠标左键虽然进入 ...
- 如何修改python代码_解决如何去除Python代码前行号的方法
获取Python脚本代码前行号的方法我们已经知道了,那如何去除Python脚本代码前行号的方法又是怎样的呢?今天我们就来为大家写个实例代码来看下. 刚刚接触Python时,因为经常要在网上拷贝别人的代 ...
- 手机如何看python代码_用手机运行Python代码
前言 在手机上运行Python需要用一个软件,叫QPython3L,当然还有别的软件也是可以运行Python的,不过我认为QPython3L是其中相对较好的一个. 首先声明一下,我也只是会简单的使用 ...
- 在树莓派里面运行python代码_树莓派如何运行python程序
树莓派如何运行python程序 发布时间:2020-09-23 12:03:39 来源:亿速云 阅读:128 作者:小新 这篇文章主要介绍了树莓派如何运行python程序,具有一定借鉴价值,需要的朋友 ...
- 交叉验证python代码_交叉验证以及python代码实现
这篇文章介绍的内容是关交叉验证以及python代码实现 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 模型选择的两种方法:正则化(典型方法).交叉验证. 这里介绍交叉验证及其pyth ...
- 怎么读python代码_【怎么读python代码】作文写作问答 - 归教作文网
python怎么读 python : 发音:英 [ˈpaɪθən] 美 [ˈpaɪθɑ:n] 中文释义:巨蛇,大蟒 复数形式:pythons 英文单词,意为巨蛇,大蟒. 扩展资料: 例句如下:When ...
- python 实现跳一跳自动化代码_微信跳一跳脚本重出江湖,python实现安卓iOS自动版与手动版!...
前面一段时间在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,毕竟这款小游戏最近吸引了众多人的目光. 演示工具 电脑系统:Win10 ...
最新文章
- python3+opencv+tkinter开发简单的人脸识别小程序
- 手动调用cx-table.focus和a.focus方法的效果比较
- aswing JTable用法
- C++:成绩类Score
- lshw linux_Linux lshw命令–获取Linux硬件信息
- flAbsPath on /var/lib/dpkg/status failed - realpath
- html页面导出pdf截断问题,vue页面生成pdf且避免分页截断处理
- 产品读书《大败局 I》 《大败局II》
- android自定义控件(组合控件)相关
- 计算机辅储存器有什么,计算机辅存储器包括
- Python经典面试题解析:实现斐波那契数列
- DICOMRT:XXX Target Volume,各种目标体积浅析
- 机器人工程师技术资料
- xp大容量u盘补丁_u盘128g 个性 大容量电脑系统修复
- mysql指令sum_MySQL Sum()函数
- 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现
- 我撑伞,在石桥上等你
- Ubuntu-Base 18 文件系统 在iMX8平台上的移植
- TpyeScript基础
- 写博客的时间被看小说、刷微信的时候,要想想
热门文章
- mac访达边栏设置显示文稿、桌面等信息,但是不显示
- unix:dup与dup2函数详解
- parquet列式文件实战(未完,待续)
- 列表和元组元素的增加
- NameError: free variable ‘xx‘ referenced before assignment in enclosing scope
- 一体化伺服电机在全自动玻璃切割机上应用简介
- Licode入门学习:MediaStream源码分析(二)
- Java基础之接口与抽象类的区别
- 水星mac1300r虚拟服务器,水星 MAC1300R V1 无线路由器上网设置
- Java基本语法入门