中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 系统
VC++ 6.0制作QQ连连看外挂
作者:未知 时间:2005-07-20 14:20 出处:VC知识库 责编:chinaitpower
              摘要:VC++ 6.0制作QQ连连看外挂

VC++ 6.0制作QQ连连看外挂

作者:zhaogang123x
QQ:330549510

下载源代码


图一 界面描述

一、制作思路

  1. 得到QQ连连看窗口指针,从而得到CDC;
  2. 对每幅图片取4个点进行编码;
  3. 实现连连看的算法;
  4. 模拟鼠标消去块;

二、部分代码

//定义的数据
bool flagx=true;  
int point1x,point1y,point2x,point2y;//保存需要单击点的位置

struct MYCOLOR
{
	COLORREF c[4];
};
MYCOLOR tc[230];//颜色表230〉11*19
int tcnum;       //所有图片的种类
int map[19][11]; //存放每个图片的颜色索引
int r1,g1,b1,r2,b2,g2; 
int pop1,pop2;
//对图形进行编码
void CZg1Dlg::OnButton3() 
{
	int pnum=0;
	//////////////////
	int t[4]={15,11,15,21};//取的4个点的x相对位移
	int tt[4]={17,17,21,17};////取的4个点的y相对位移
	////////////////////
	int result;
	tc[0].c[0]=tc[0].c[1]=tc[0].c[2]=tc[0].c[3]=7753015;
	tcnum=1;
	MYCOLOR tmp;
	CPoint p(10,180);
	CDC *pdc=myc->GetDC();
	CString hh="     编码结果: \n";
	CString h;
	int myr,myg,myb,t_t,sh;
	for(int i=0;i<11;i++)
	{
		p.y=180+i*35;
		for(int j=0;j<19;j++)
		{
			p.x=10+j*31;
			for(int k=0;k<4;k++)
				tmp.c[k]=pdc->GetPixel(p.x+t[k],p.y+tt[k]);
			sh=0;
			for(t_t=0;t_t<4;t_t++)
			{
				myr=GetRValue(tmp.c[t_t]);
				myg=GetGValue(tmp.c[t_t]);
				myb=GetBValue(tmp.c[t_t]);
				if ((myr<73)&&(myr>45)&&(myg>50)&&(myg<90)&&                                          (myb>103) &&(myb<129))                                      
					sh++;
			}
			if(sh==4)
				map[j][i]=0;
			
			else
			{
				pnum++;
				result=findcolor(tmp);
				if(result==-1)
				{
					tc[tcnum].c[0]=tmp.c[0];
					tc[tcnum].c[1]=tmp.c[1];
					tc[tcnum].c[2]=tmp.c[2];
					tc[tcnum].c[3]=tmp.c[3];
					map[j][i]=tcnum;
					tcnum++;	
				}
				else
				{
					map[j][i]=result;
				}
			}
			h.Format("%d ",map[j][i]);
			hh+=h;
			sh=0;
		}
		hh+="\n";
	}
	bool yy=true;
	for(int y1=0;y1<11;y1++)
	{
		for(int y2=0;y2<19;y2++)
		{
			if(tc[map[y2][y1]].c[0]==-1)
				yy=false;
		}
	}
	CString cs2;
	cs2.Format("总共有 %d 可消!",pnum);
	hh+=cs2;
	MessageBox(hh);
	for(i=0;i<11;i++)
		for(int j=0;j<19;j++)
		{
			mymap[i][j]=map[j][i];
		}
		
		if(!yy)
		{
			MessageBox("请重新编码!\n
                编码时要确保游戏窗口不要被其他窗口挡住!");  
		}
		flagx=true;
}      
三、结束语
  不足之处是点击2次鼠标才能消去1对。因为这个游戏必须鼠标真正点击1次才能作到实现鼠标模拟的另外一次单击。
 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有