基于MFC对话框的qq游戏连连看外挂

最近和朋友玩连连看,奈何朋友太厉害了,玩了几盘都孔夫子搬家,碰巧这几天都在看孙鑫的书,于是就萌生了做一个qq连连看外挂的念头,权当练练手嘛,写这东西的时候也参考了很多文章,其中这篇文章对我最有帮助:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值