您的位置:首页 > 其它

跟我学 编写QQ找茬辅助1 -原创文章

2012-02-21 16:45 253 查看
今天把完美日志更新一下打算早点睡觉的.
被朋友拉着玩了一下QQ找茬..高手大有人在啊..很是悲惨..

朋友痛恨的说.不行,要找外挂玩玩..百度一下,也还有不少..对于一个对辅助略有心得本人深深的感到要发挥一把.于是唰唰唰开工.

首先分析一下原理和实现步骤.

原理:



通过上图可以发现,左右为2张同等大小的图片.所谓找茬就是找出图片中的不同地方.
这2张图片是经过PS的图片.

既然是2张同样大小的图片,那样就好办了.可以通过扫描图片点阵获得RGB值.对比2张图片的RGB.其中相同的RGB值肯定是相同区域.不同的RGB值那肯定就是被PS过的2张图片的差距了.

实现步骤:
1:因为是测试,所以这里采用简单的办法,手工定位游戏出来的位置.



2:打开VS2008(vc 6.0 vs2003 vs2005操作步均可).
新建一个对话框工程.
设置如下界面:



3:双击按钮写入写入如下代码:



代码如下:

CWnd *pWnd = GetDesktopWindow();
CDC *dc = pWnd->GetWindowDC();                                //获取屏幕DC
CDC *PictureDc = GetDlgItem(IDC_PICTURE_SHOW)->GetDC();        //获取picture control DC
COLORREF PointRGB1;
COLORREF PointRGB2;

for (int i = 160; i < 380 + 160; i++)                         //横向遍历
{
for (int j = 200; j < 285 + 200; j++)                    //纵向遍历
{

PointRGB1 = dc->GetPixel(i,j);                        //获得第一张图片i,y所在点的RGB值
PointRGB2 = dc->GetPixel(i + 393,j);                //获取第二张图片(393 + i),y所在点的RGB值
if (PointRGB1 != PointRGB2)                            //如果2个对应点的RGB值不相等,说明图片被PS过
{
PictureDc->SetPixelV(i - 160,j - 200,PointRGB1);//在picture control内绘出颜色
}
}
}

ReleaseDC(PictureDc);                                        //释放picture control DC句柄
ReleaseDC(dc);                                                //释放屏幕DC 句柄


下面是演示:



总结:
以上代码仅仅完成屏幕扫描颜色.扫描的过程有点慢.此代码仅仅为学习演示,以后有时间我会继续完善.
完善内容包括:
1:自动确定游戏需要扫描图片的位置.
2:扫描出结果自动按键.
3:优化扫描速度.

同时也希望大家能够提出意见和看法

来自于: http://hi.baidu.com/watsy/blog/item/9afe9eca3b3aa88cc81768ba.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: