基于MFC对话框的qq游戏连连看外挂
2014-07-28 14:42
218 查看
最近和朋友玩连连看,奈何朋友太厉害了,玩了几盘都孔夫子搬家,碰巧这几天都在看孙鑫的书,于是就萌生了做一个qq连连看外挂的念头,权当练练手嘛,写这东西的时候也参考了很多文章,其中这篇文章对我最有帮助:
1.http://www.cnblogs.com/hsapphire/archive/2011/03/14/1983616.html
qq连连看外挂的思路,我同样也采取了网上较为普遍的方法:
热键响应->获取游戏窗口句柄->分析游戏区域图像->将图像化为二维数组->实现消除算法
然后在CXXXXXXDLG类的类向导中添加消息WM_HOTKEY,再在消息函数里面编写就可以使用热键了 。
然后通过 pGameWnd->m_hWnd就能得到当前游戏窗口的句柄了,不过这样会有一个缺陷,就是一定要让游戏窗口是前台才行。
然后我们就可以通过用 GetPixel()来获取像素点,之前尝试过取3个点,发现不够精准,建议每个方块取6个点以上这样。
可以建立一个COLORREF pGameRGB[11][19][6]来得到并且保存像素点,再通过这个二维数组来将相同颜色方块编号,再存入用于实现算法的二维数组pGameColor[11][19]中。
需要注意的是相同颜色的方块有可能有8个!,所以在判断背景颜色的时候就是8个不同颜色,所以有8个以上相同图案的就是背景颜色啦。
最后附上我写的程序&&源码,工程需在vs2010下打开。
http://pan.baidu.com/s/1hqmUuFE
1.http://www.cnblogs.com/hsapphire/archive/2011/03/14/1983616.html
qq连连看外挂的思路,我同样也采取了网上较为普遍的方法:
热键响应->获取游戏窗口句柄->分析游戏区域图像->将图像化为二维数组->实现消除算法
热键响应
在CXXXXXXXDLG类的OnInitDialog中注册热键<span style="font-size:14px;"> ::RegisterHotKey(m_hWnd, 001, NULL, VK_F1); //在这里我注册的是F1键</span>
然后在CXXXXXXDLG类的类向导中添加消息WM_HOTKEY,再在消息函数里面编写就可以使用热键了 。
获取游戏窗口句柄:
CWnd* pGameWnd; pGameWnd=GetForegroundWindow(); //获取前台的窗口类对象
然后通过 pGameWnd->m_hWnd就能得到当前游戏窗口的句柄了,不过这样会有一个缺陷,就是一定要让游戏窗口是前台才行。
分析游戏区域图像 && 将图像化为二维数组:
游戏区域内一共有11*19个小方块,每个小方块长35宽31,并且第一个方块距离左边边界大约在15像素。距离上边边界大概在182像素,在上面给出的第一个连接中有关于方块像素的详解图.这里就不盗图了。然后我们就可以通过用 GetPixel()来获取像素点,之前尝试过取3个点,发现不够精准,建议每个方块取6个点以上这样。
可以建立一个COLORREF pGameRGB[11][19][6]来得到并且保存像素点,再通过这个二维数组来将相同颜色方块编号,再存入用于实现算法的二维数组pGameColor[11][19]中。
需要注意的是相同颜色的方块有可能有8个!,所以在判断背景颜色的时候就是8个不同颜色,所以有8个以上相同图案的就是背景颜色啦。
实现算法
关于连连算消除方块的算法在网上一搜是一大堆了,知道规则是方块到方块之间最多只能拐两次弯,就可以相应地写出算法了。这里就不详细地写出来了。最后在成功匹配到方块的时候模拟鼠标点击就可以了,不过要注意需要将游戏窗口内的坐标转换到屏幕中。最后附上我写的程序&&源码,工程需在vs2010下打开。
http://pan.baidu.com/s/1hqmUuFE
相关文章推荐
- 在基于对话框的MFC程序中,使程序在任务栏中不显示图标
- MFC-在基于对话框的应用程序中嵌入CSplitterWnd
- 如何初始化基于对话框的MFC程序中对话框的大小
- 将基于MFC的对话框应用程序修改为服务程序
- MFC基于对话框最小化到托盘,并鼠标右键添加菜单以及对应菜单功能
- MFC基于对话框的位图加载
- MFC 基于对话框的背景图片设置
- 基于对话框的MFC PocketPC应用程序全屏方法
- 【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
- 基于对话框的MFC应用程序加入Accelerator
- 基于对话框的ActiveX控件开发以及MFC对话框调用点击无响应问题
- MFC学习笔记——状态栏(基于对话框的MFC程序)
- oracle10g C++ MFC开发学生管理信息系统(基于对话框、VC6.0环境)
- 【MFC】基于对话框的键盘响应
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
- 基于MFC对话框的OpenGL三维图形开发
- 基于对话框的MFC应用程序GetWindowRect(),GetClientRect()探究
- 在基于对话框的MFC程序中,使程序在任务栏中不显示图标
- 基于Dialog的MFC对话框上利用OpenCV 3.0显示图片
- 基于对话框的MFC程序加入菜单资源