Visual C++ 6.0制作QQ连连看外挂

  • 来源: 互联网 作者: rocket   2008-03-18/11:41
  • 一、制作思路

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

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多