《大家来找茬》游戏辅助工具开发
《大家来找茬》游戏辅助工具开发
提示:本博文仅供学习交流,并无任何破坏游戏环境之意。
文章目录
- 《大家来找茬》游戏辅助工具开发
- 规则分析
- 开发思路
- 程序设计
- 1.获取图片
- 2.图片对比
- 3.GUI显示
- 总结
规则分析
在规定时间内找出2张相似的图片中不一样的5处地方就算过关,一般是连续5回合,也就是5组图 25个错误地方。在总时间内找到最多最快的算胜利。
开发思路
- 屏幕抓取
- 图片对比,找出不同之处
- GUI显示帮助信息
程序设计
1.获取图片
首先,获取游戏界面中两张相似图片。关键部分程序如下:
win32gui.GetWindowRect(handle) # 获取窗口矩形坐标# 通过计算目标图片相对于父窗口的位置进行截取
img_ready = ImageGrab.grab((x1, y1, x2, y2))
img_left = ImageGrab.grab((x1 + 134, y1 + 463, x1 + 134 + 582, y1 + 463 + 439))
img_right = ImageGrab.grab((x1 + 820, y1 + 463, x1 + 820 + 582, y1 + 463 + 439))
运行结果如下图所示:
2.图片对比
将获取的两张图片进行对比,找出不同之处。两张图片的不同之处总结起来有两点:颜色差异和轮廓差异。颜色差异可通过简单的三通道求差获取,轮廓差异可通过轮廓检测后求差获取(预期方案)。但是在实际对比两张图片时发现其实两张图片完全不一样,一方面两者有一定的色差,另一方面两者轮廓并非绝对重合,而是存在一定偏差。所以我觉得采用将两张图片叠加,然后生成GIF动图的形式辅助我们用肉眼快速找出不同。这种生成GIF图的方法能够找出两者的轮廓差异,但是在颜色差异上略显乏力(特别是深红色和紫色,两者闪烁我根本看不出来有变化。),所以此时需要用到色差图进行”补漏“。相关关键代码如下:
diff = cv.subtract(cv.cvtColor(np.asarray(img_left), cv.COLOR_BGR2RGB),cv.cvtColor(np.asarray(img_right), cv.COLOR_BGR2RGB))def create_gif(image_list, gif_name, duration = 0.35):frames = []for image_name in image_list:frames.append(imageio.imread(image_name))imageio.mimsave(gif_name, frames, 'GIF', duration = duration)returndef main():image_list = ['img1.jpg', 'img2.jpg']gif_name = 'diff.gif'duration = 0.1create_gif(image_list, gif_name, duration)
运行结果如下图所示:
3.GUI显示
本来是想通过获取图片不同之处的坐标值,利用win32api的mouse_event进行单击操作,实现完全的自动化操作。但是由于时间和精力限制,使用GUI显示辅助判断信息的方式取缔了上述方案。关键代码如下:
def run(self, evt):windowName = "大家来找茬"dst = get_picture(windowName)# cv.imshow("dst", dst)gif.create_gif(["img1.jpg", "img2.jpg"], "diff.gif", 0.1)self.animation.Stop()self.animation = AnimationCtrl(self.panel, -1, Animation('diff.gif'), pos = (0, 0)) # 创建一个动画self.animation.Play() # 播放动图row, col, x = dst.shapebmp = wx.Bitmap.FromBuffer(col, row, dst)wx.StaticBitmap(self, -1, bmp, (0, 500), (bmp.GetWidth(), bmp.GetHeight())) # BUG:静态图更新延迟
未解决BUG:静态图更新有延迟,一般gif更新后需再点击一次按钮才会更新jpg
总结
欢迎各位看官指出不足之处,并给予宝贵建议和意见!
想了解更多,或者下载源码:https://github.com/mstifiy/GameTool
《大家来找茬》游戏辅助工具开发相关推荐
- 找茬类辅助工具的编写
主要有两个方面:屏幕抓图与贴图和像素比较与重设 若使用GDI,建议使用CImage类,比较方便. 原理很简单:将两幅图抓取下来,按像素比较,相同的设一种色,不同的设另一种色,然后形成新的图,再将此图贴 ...
- 比较不错的一个ios找茬游戏源码
找茬游戏源码 ,这个是一款非常不错的ios找茬游戏源码,该游戏的兼容性非常好的,并且还可以支持ipad和iphone,UI界面设计得也很漂亮,游戏源码真的是一款非常完美,而且又很完整的一款休闲类的游戏 ...
- 由于找不到appvisvsubsystems32.dll_找茬游戏大全:我找东西贼快!小清新找茬游戏小程序,点开既玩...
50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <我找东西贼快>游戏小程序好玩吗? <我找东西贼快>小游戏怎么玩? 怎么进入<我找 ...
- 【网络游戏§绿色DOTA2魔笛V1.001 官方最新版§DOTA游戏辅助工具§】
[网络游戏§绿色DOTA2魔笛V1.001 官方最新版§DOTA游戏辅助工具§] 软件大小:11.53MB 软件语言:简体中文 软件授权:免费软件 更新时间:2013-06-19 01:27:40 应 ...
- 以前写的网页游戏辅助工具源码 传奇类的HOOK 封包 按钮
以前写的网页游戏辅助工具源码 传奇类的HOOK 封包 按钮. 限量出源码,有需要的 116327160
- “QQ找茬”游戏的识别小软件JAVA源码
"QQ找茬"游戏识别很简单,只包含查找定位.定位比较和显示三部分,作者设计两个类: 1.GUI类:frmZC类,包含"定位"和"查询"两个按 ...
- 找茬游戏中是如何设计两个图片的不同之处的
使用程序自动生成不同是一件几乎不可能的任务 因此找茬游戏的图片还是需要作者自己PS 但是一对图只能使用一次实在是太浪费了 今天看了下Win8版的美女找茬的文件结构 搞清楚了他们的设计 首先处理图片 在 ...
- 萝卜游侠-一款搜索和修改内存地址的游戏辅助工具
上次我发布的GameEnchanter也是一个强大的游戏修改工具.不知道的可以点GameEnchanter打开研究下.今天我就大家带来的是另一款游戏修改工具.萝卜游侠是一款搜索和修改内存地址的游戏辅助 ...
- Auto js编写微信小游戏 《一笔画完》 辅助工具--开发篇
前言: 1.开发工具:Auto js 2.平台:安卓6.0以上 3.开发语言 :javascript 效果演示: 这里附上效果展示视频: 开发步骤: 1.建模,将游戏环境转化为数据 2.使用算法,寻找 ...
- QQ游戏辅助工具-大家来找碴(附源码)
前几天看到一个朋友在QQ上玩找碴游戏,战绩实在是惨不忍睹,便想到写一个辅助工具.(难道这是程序员的职业病,什么问题都想通过编程解决?) 原理和程序都简单,有一定编程基础和基本图像处理知识的人只要有点耐 ...
最新文章
- ubuntu18 python_ubuntu18.0.4 python 开发环境
- 水很深,我还是下去了
- mysql 累计值_mysql 累计值计算
- 输入流输出流是以内存为标准_构建用于测试的超大内存输入流
- android app固定dp,Android屏幕适配—被偷走的dp
- java变量默为public_《Java8学习笔记》读书笔记(六)
- 爬虫之HTTP基础知识
- MySQL数据库性能优化之硬件瓶颈分析
- 如何简化卷积神经网络_卷积神经网络:简化
- c#定时器Timer
- 软件工程——软件详细设计
- 免费会员管理管理系统
- LeetCode 430. Flatten a Multilevel Doubly Linked List【链表/DFS/递归/迭代】中等
- 移动互联网技术(wifi)
- 第31章 MySQL 处理重复数据教程
- 宝元系统通讯软件recon_优软科技会场式电话录音系统
- STM32不能进入睡眠模式
- 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...
- 明明努力了却学不好Java_为什么我这么努力,还是得不到自己想要的结果???...
- oracle数据库中的update语句的用法