游戏模式

这是一个2D插画风格的益智游戏,玩家可以点击屏幕控制控制飞船在星球间飞跃,刚开始控制不好可能会撞上星球。

工具介绍

  • Python 3.5
  • Android 手机
  • Adb 驱动

原理说明

通过OpenCV里的cv2.HoughCircles()函数识别星球,通过像素颜色识别飞船,在飞船运行到两个星球间时点击屏幕。

程序源码

import cv2
import numpy as np
import osdef findplanetcircle(planet):gray_img = cv2.cvtColor(planets, cv2.COLOR_BGR2GRAY)img = cv2.medianBlur(gray_img, 5)# cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 120,param1=100, param2=50, minRadius=60)for i in circles[0, :]:# draw the outer circlecv2.circle(planets, (i[0], i[1]), i[2], (0, 255, 0), 2)# draw the center of the circlecv2.circle(planets, (i[0], i[1]), 2, (0, 0, 255), 3)return circlesdef findship(planets):(height, width, _) = planets.shapefor h in range(0, height, 5):for w in range(1, width, 5):(B, G, R) = planets[h][w]if 110 < B < 125 and 80 < G < 90 and 15 < R < 25:# cv2.circle(图片, (w, h), 半径, (255, 255, 255), thickness)cv2.circle(planets, (w, h), 2, (255, 255, 255), 3)return w, hdef computedist(point1, point2):return np.sqrt(np.square(point1[0] - point2[0]) + np.square(point1[1] - point2[1]))i = 1
while True:i = i + 1os.system('adb shell screencap -p /sdcard/autojump.png')os.system('adb pull /sdcard/autojump.png test/' + str(i) + '.png')planets = cv2.imread('test/' + str(i) + '.png')circles = findplanetcircle(planets)w, h = findship(planets)cv2.imwrite("test/" + str(i) + "circles.jpg", planets)ind = np.argsort(-circles[0][:, 1])circles = circles[0][ind]indexlist = []for index, item in enumerate(circles):widthcircle, heightcircle, radius = item# 判断目前在哪儿个星球,去掉当前星球if np.abs(computedist(item, (w, h)) - radius) < 35:indexlist.append(index)# 判断哪儿个星球已经走过,并且去掉elif heightcircle > h:indexlist.append(index)planetsNum = [i for i in range(circles.shape[0])]futurePlanet = list(set(planetsNum).difference(set(indexlist)))circles = circles[futurePlanet]for index, item in enumerate(circles):widthcircle, heightcircle, radius = itemprint(np.abs(computedist(item, (w, h)) - radius))if 60 < np.abs(computedist(item, (w, h)) - radius) < 150:print("正在点击")os.system('adb shell input swipe 525 1650 527 1654 2')cv2.imwrite("test/jump" + str(i) + ".jpg", planets)

实验结果

下图是飞船和星球识别标注后的图片。

TODO

图像识别功能已经完成,可是ADB截图再传送到电脑有一定时间,所以点击的时候,飞船已经飞了大半圈了,所以还需要完善,做到实时画面传送。

OpenCV玩微信小游戏星途WeGoing相关推荐

  1. Pytorch强化学习玩微信小游戏

    文章目录 1.前言: 2.环境准备: 3.代码讲解 A.首先是与调试环境交互相关的代码讲解: B.其次是神经网络代码的讲解 C.最后就是模型训练的代码了 四.总结 1.前言: 学习了DQN有一段时间了 ...

  2. python 控制鼠标点击需要100ms为什么_用 Python3 和 OpenCV 替我玩一玩微信小游戏 — 跳一跳 (这算外挂么)...

    0 瞎弄 我知道你们喜欢先看效果 手残的我,始终跳不过你们这些超过 50 分的大佬.想起最近在用 Python 学习 ML (Mechine Learning, 机器学习) ,怎么用没学会,倒是里面神 ...

  3. opencv制作微信小游戏 最强连一连 辅助(1)--概述

    之前在b站上面看到一个人发布的一个视频 https://www.bilibili.com/video/av44383086?from=search&seid=34877549027742780 ...

  4. 教你用微信H5牛牛来玩微信小游戏“跳一跳”

    2017 年 12 月 28 日下午,微信发布了 6.6.1 版本,微信H5牛牛开发搭建(h5.fanshubbs.com)加入了「小游戏」功能,并提供了官方Q_1687054422.这是一个 2.5 ...

  5. 用Python来玩微信小游戏跳一跳

    源码 Python源码下载 工具介绍 - Python或Anaconda - 手机或模拟器,用于运行游戏 - ADB 驱动,下载地址 - 相关依赖,例如PIL库 实现原理: 精确测量出起始和目标点之间 ...

  6. opencv制作微信小游戏 最强连一连 辅助(3)--opencv matchTemplete多目标匹配

    上一篇我写了如何用dfs深度优先搜索算法来求解,入参是一个二维数组,这个二维数组是人为手动赋值的 这一篇我们来讲如何自动来完成这一过程. 也就是说 入参是一个 游戏的画面,出参是一个二维数组 如下图: ...

  7. opencv制作微信小游戏 最强连一连 辅助(2)--dfs深度优先搜索算法

    深度优先搜索算法还是大二上数据结构的时候学的,工作以后都忘得差不多了.赶紧回来温习一下吧. 深度优先搜索的算法的 入参是一个地图(一般可以用二维数组表示)和一个起始点. 比如 这个就是一个5*5的二维 ...

  8. [小游戏资源] 微信小游戏开发资源目录

    一.官方微信小游戏教程 小游戏简易教程 小游戏API大全 小游戏开发工具 小游戏应用商店 二.微信小游戏精品源码 [小游戏源码] 微信小游戏空中射击源码 [小游戏源码] 微信小游戏星途Demo源码 [ ...

  9. 【转】微信小游戏开发源码_教程_工具_资源最新集合

    [小游戏资源] 微信小游戏开发资源目录 一.微信官方游戏教程 小游戏简易教程 小游戏API大全 小游戏开发工具 二.微信小游戏图标资源 Game-icons.net 三.微信小游戏图片资源 Super ...

最新文章

  1. 2022-2028年中国地铁广告行业研究及前瞻分析报告
  2. Android 2.0中电话本contact的读写操作(增删改查一)
  3. 计算机背景象怎样改变,我的页面背景总是黑色,以前改变过现在好象改变不了?我该怎么改变呢? 爱问知识人...
  4. 浅谈ASP.NET的Postback
  5. java之前后端交互原理
  6. tomcat 6.0 部署报错信息
  7. Spark基本操作SparkSession,DatasetRow,JavaRDDRow
  8. 【java设计模式】迭代子模式
  9. 安卓从业者应该关注:Android 6.0的运行时权限
  10. 使用JavaSymbolSolver解决Java代码中的方法调用
  11. Java日历compareTo()方法与示例
  12. 出于安全考虑,谷歌禁用三款 Linux web 浏览器登录其服务
  13. Linux Vi 的使用
  14. 我的2014--菜鸟慢慢在长大
  15. 学习笔记(13):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-ffmpegSDK开发环境准备,第一个ffmpeg项目创建...
  16. 腾讯云图地图使用介绍
  17. QT控件学习:QInputDialog
  18. R语言学习(六)——关联规则分析
  19. STM32+DRV8711驱动步进电机
  20. Python爬虫入门-小试ImagesPipeline爬取pixabay和煎蛋之为什么是‘404’

热门文章

  1. 【JY】为什么要了解和学习多款仿真软件?
  2. 实用的Word文档翻译方法分享,让Word文档快速翻译
  3. 封号、扣钱:谁来保证专车司机的利益?
  4. 牛客网刷题day21
  5. 资本寒冬之下的聚美优品私有化
  6. 【C++】利用DFS求解水洼数目问题
  7. 常用三种写透明度的方法
  8. 无人机遥感技术在房产测绘应用中有哪些优势?
  9. 如何搭建自己的内测分发平台?有可以直接用的内测分发平台吗?
  10. Mac软件下载站推荐,让你告别软件荒!