借助OpenCV(C/C++端口)与Python构建“微信小游戏——跳一跳”自动游戏“外挂”

简介:

最近微信上很火的一款小游戏,加上好友排名系统,让很多人大感有毒,游戏规则大家清楚,大致便是根据手指按压屏幕的时间长短来决定小人跳跃的距离。最开始想到的是用手机模拟器+AlexNet完成目标检测与计算,再通过Python脚本实现对鼠标的控制。但是发觉运用网络,训练集的数据不易获取,如果通过自动游戏的过程自我学习,时间又太长。因此考虑用OpenCV扫描实现对目标点的检测。

声明:

由于不希望破坏游戏的可玩性与平衡性,因此不会公布源码,测试也是在新建的微信上进行的测试,本文仅供学习参考。

实现工具:

OpenCV 3.4.0
Python 2.7.13
Genymotion 2.8.0
PhotoShop CC2017

实现步骤:

1.对游戏细节的观测
a.每次从小人落到下一个木块上方到下一个木块出现且摄像机镜头移动到视野中央的时间均在2s内完成
b.特殊木块站立2s会有额外加分
c.下一个木块总是在当前的木块的左上方或者右上方
d.由于手机屏幕宽度的限制,下一个木块最高不能超过手机屏幕的三分之一到四分之一;即,手机屏幕最上方四分之一到三分之一区域内是一定没有木块的
e.每一个木块的阴影总是在这个木块的左下方
f.小人的紫色是独一无二的暗紫
g.背景颜色在不断变化
h.背景颜色永远不会与木块相同
2.实现流程初步规划
调用OpenCV从屏幕三分之一开始扫描,扫描到第一个特殊点(通过特定的RGB)的点时,记录位置,向下减去一定的像素值即是下一要跳木块的中心点,记录坐标值。继续向下扫描,扫描到紫色(小人特定的RGB)时,通过向下减去一定的像素值,即是近似当前的中心点,记录坐标值。通过调整参数测试确定鼠标按压时间与两个目标点——当前木块的中心点(即站立点)和下一要跳木块的中心点——之间的函数关系。
3.关键步骤实现源码
a.通过PS观测记录每个木块特定点以及小人特定点的RGB值作为自定义库
具体库用一个结构体实现便可,简单易行。
注意,此处有个小发现便是,对于有相同g值的RGB是唯一的。
![RGB列表](https://img-blog.csdn.net/20180104204018768?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWm1vdWRvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
b.通过CopyScreenToBitmap等函数
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值