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

图一 界面描述

一、制作思路

  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次才能作到实现鼠标模拟的另外一次单击。

时间: 2024-08-01 18:35:08

VC++ 6.0制作QQ连连看外挂的相关文章

使用VC++6.0制作ASP服务器控件简介(zt)

使用VC++6.0制作ASP服务器控件简介富 亮 -------------------------------------------------------------------------------- 用ASP写网页的程序员,一定对VBSript语句"Set Conn=Server.Object('ADODB.Connection')"非常熟悉.该语句是利用ASP的Server对象创建了一个数据库控件,它提供了一系列的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作.

VC制作水晶连连看外挂

引言: 最近在朋友那搞了个连连看游戏来玩玩,觉得还不错,不过就是玩不过人家,记得以前在一本书上看到过连连看外挂的做法,还比较简单,自己还没忘,于是下定决心, 自己做一个,然后--.哈哈,看谁还打得过我. 好了,现在说下外挂的具体思路(我假设大家都知道连连看游戏的规则).这个外挂无非就是要电脑来帮我门找到相同的图片并看他们是否连通.这里有两个问题,一个 就是怎么让电脑区别不同的图片呢?这里有个简单的办法,就是在每个图片中取5个点,然后 将这5个点的像素值相加做为这种图片的ID,这样一般不会出现重复

使用VC++6.0制作ASP服务器控件简介

c++|服务器|控件 用ASP写网页的程序员,一定对VBSript语句"Set Conn=Server.Object('ADODB.Connection')"非常熟悉.该语句是利用ASP的Server对象创建了一个数据库控件,它提供了一系列的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作.类似的,在Visual InteDev6.0中,我们还可以看到一些ASP的内置组件如"Scripting.FileSystemObject".但是,在有的场合,仅利用这些

用VBScript制作QQ自动登录的脚本代码

有时候我们在个人电脑上,每次输入密码比较麻烦,可以自动登录,但如果qq账号多了,就可以使用这个脚本了   一直用的是狂人版的QQ,也用它附赠的自动登录器很久了,不过最近一版的狂人QQ不知为何取消了自动登录组件.好在QQ2009已经能够同时记住多个号码的密码,虽然要多点击几下,但依然能够实现免输入密码登录. 谁知最近不知道电脑发了什么疯,每隔一段时间,QQ记住的密码就会被清空.我的两个QQ号密码都设置得比较复杂,每次登录要输入两遍密码实在是件痛苦的事情,于是决定自制一个登录器. 在网上找了许久,发

伪装QQ飞车外挂的“MBR锁”木马分析

一.前言 在过完年开工之际,黑产从业者也回到了他们的工作岗位上,在短短的一周内,相继爆发了"纵情"敲诈者以及伪装QQ飞车外挂的"MBR"敲诈者两款国产敲诈者木马.国产敲诈者在敲诈金额,技术手段以及加密方式上都远远落后于国外的敲诈者木马,但国产敲诈者的最大优点就是能把握住卖点,比如以游戏外挂作为噱头.除此之外,国产敲诈者还喜欢诱导用户关闭杀软以达到所谓的"最佳体验".可以说,国产敲诈者胜在了"套路". 本文分析的国产敲诈者即为伪

用VBScript制作QQ自动登录的脚本代码_vbs

一直用的是狂人版的QQ,也用它附赠的自动登录器很久了,不过最近一版的狂人QQ不知为何取消了自动登录组件.好在QQ2009已经能够同时记住多个号码的密码,虽然要多点击几下,但依然能够实现免输入密码登录. 谁知最近不知道电脑发了什么疯,每隔一段时间,QQ记住的密码就会被清空.我的两个QQ号密码都设置得比较复杂,每次登录要输入两遍密码实在是件痛苦的事情,于是决定自制一个登录器. 在网上找了许久,发现了一个用VBS制作QQ登录脚本的办法: 复制代码 代码如下: set WshShell = WScrip

代码-vc 6.0 error c2491 报错啊,头大

问题描述 vc 6.0 error c2491 报错啊,头大 简单又奇怪的问题又来了... debug版完全正常:release版报错c2491. definition of dllimport function not allowed. (我是接手的别人的项目,项目工程代码里没有看到有dllimport 或者是其他明显的问题啊). 解决方案 检查一下你Release版本跟Debug版本的工程配置,尤其预编译宏的设置. 应该有宏定义不一致,导致dllexport,dllimport的导入 解决方

环境-vc++6.0内关于s=(i++)*(i++)的问题

问题描述 vc++6.0内关于s=(i++)*(i++)的问题 int i = 0: s = (i++)*(i++) printf("%d",s): 这个结果应该是多少?我个人分析应该是2,第一个i++使用的是1 然后i的值应该变成2然后第二个i使用的是2 然后i变成3 结果s的值应该是2 但是在vc++6.0的环境下运行结果为什么是1呢?新手求解. 解决方案 这个问题问了无数遍,我想这么告诉你. 就C++语言来说,这个是语言未定义行为,所谓语言未定义行为,就是在语言规范中没有规定遇到

VC++6.0如何添加头文件(graphics.h)??

问题描述 VC++6.0如何添加头文件(graphics.h)?? 'graphics.h': No such file or directory Error executing cl.exe. 编译中出现这个问题(本人初学者),网上说要添加头文件,按照网上的教程结果错误更多了,头文件添加不成功,请求大神支援,怎么破??? (详细一点可以么?最好附上截图,万分感谢!) 解决方案 初学者的话,建议你换Borland C++或者Turbo C++ 这是是属于DOS时代Borland搞出来的一个绘图库