【好玩的应用】QQ连连看辅助工具

自己学了这么久的C语言,但没有写出过什么可以用的东西来,总觉得心里不爽。这几天实在是不想干正事,在网上瞎逛逛,结果发现有人写了连连看的外挂。顿时觉得这很有意思啊。于是把代码下载下来,捣鼓了捣鼓。发现还挺简单的,于是自己研究了一下,仿照着写了一个。

外挂的主要思路:获取窗口位置,获取屏幕信息对图片编码,查找可消除对,模拟鼠标点击来消除。

1.外观:

这个是用MFC做的,我自己是一点MFC都不会的,开始在界面上卡了好久,一直在网上找MFC的教程。但是网上的教程都大多扯些杂七杂八的东西,看了很久都不知道究竟怎样才能做出一个界面。后来我干脆不看了,直接上手试试,在vs2012里面创建了一个MFC的应用。结果发现基本的外观实现起来很简单。直接把控件拖进去就行了。再把属性改改就好了。

外观做好后,要把点击按钮和功能函数联合起来。

在MFC自动生成的Dlg的类中加入功能函数声明

里面还有一些后面需要用到的关于图像编码的信息也放在类里面。

class CLinkGameHelperDlg : public CDialog
{
public:
    CWnd * myc;
    MYCOLOR * tc; //记录连连看游戏中的每一种图片信息
    int tcnum;  //记录连连看游戏中的图片种类数
    int* map;   //记录连连看游戏的编码结果
    int pnum;   //记录总的待消除图片数
    CRect loc;
    CLinkGameHelperDlg(CWnd* pParent = NULL);    // 标准构造函数
    enum { IDD = IDD_LINKGAMEHELPER_DIALOG };
protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    HICON m_hIcon;
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnButtonLock();   //下面的这些函数就是与按钮对应的
    afx_msg void OnButtonClear();
    afx_msg void OnButtonClearAll();
    afx_msg void OnButtonAuto();
    afx_msg void OnButtonUpGrade();
    afx_msg void OnButtonHelp();
    DECLARE_MESSAGE_MAP()
};

然后在对应的cpp文件中找到

BEGIN_MESSAGE_MAP(CLinkGameHelperDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
END_MESSAGE_MAP()

下面加入函数与按钮的连接:

BEGIN_MESSAGE_MAP(CLinkGameHelperDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON_LOCK, OnButtonLock)
    ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
    ON_BN_CLICKED(IDC_BUTTON_CLEARALL, OnButtonClearAll)
    ON_BN_CLICKED(IDC_BUTTON_AUTO, OnButtonAuto)
    ON_BN_CLICKED(IDC_BUTTON_UPGRADE, OnButtonUpGrade)
    ON_BN_CLICKED(IDC_BUTTON_HELP, OnButtonHelp)
END_MESSAGE_MAP()

2.锁定窗口+编码

现在进入功能实现的第一步:找到QQ连连看的游戏窗口。可以通过下面的语句实现:

该语句会找到窗口名为:QQ游戏 - 连连看角色版 的窗口。如果失败了,我们提供失败的信息。

   CWnd *p = CWnd::FindWindowA(NULL, "QQ游戏 - 连连看角色版");
    if(p == NULL)
    {
        MessageBox("请启动连连看游戏窗口");
        return;
    }

如果锁定成功,那么我们就可以通过获取窗口信息来对图片编码了。

观察游戏界面:可以知道左上角的第一个图片距窗口上方180像素,左边10像素,每个图片大小为31*35,共有19*11个放图片的位置。

获取窗口相对屏幕左上角的坐标

myc = p;   //连连看的窗口
myc->ClientToScreen(&loc); //获取连连看窗口相对屏幕的位置 loc是个CRect的类型,在上面的类里面有定义

获取屏幕(x,y)处的像素值:

CDC *pdc=myc->GetDC();pdc->GetPixel(x , y);

根据上面的图片信息和获取的窗口相对屏幕的位置我们可以知道每一个图片相对屏幕左上角的坐标。

我们在每张图片上采样4个点,获取像素值。

定义一个MYCOLOR的结构来存一个图片的四个采样点的像素值:

//图片结构的定义 取图片上的四个点的像素
typedef struct MYCOLOR
{
    COLORREF c[4];
}MYCOLOR;

定义一个MYCOLOR的数组tc,来存放不同种类型的图片,每获取一张图片的4个像素点信息后与tc中已经存放的图片做比较,如果有相同的就获取已经有的编号(在数组中的位置,从1开始),如果不同则在tc中加入这种新图片。

注意:底色的深蓝像素是(48 76 112)如果四个采样点的像素都接近背景值,则认为该位置没有图片,编码0.

用一个整数数组map来存放编码信息。

下图是给定场景的编码结果:

(题外话:大家能猜出来那露出了半个眼睛的人是谁吗?)

3.找可消除的图片对

有了编码信息后,我们就可以查找可以消除的图片了。关键是图片要一致,且路线不能超过两个弯。

图片一致很好解决,选一个基准图,然后从后面遍历所有的图片,找到与其编码相同的。

难点在判断路径:从下图给出路径判断的方法,分析横竖横类型的连线。

竖横竖类型的连线同理。

只要能够找到两种连线的任意一种,即表明两个图片可以相消。

4.鼠标点击消除

用下面的语句实现鼠标移动和点击:

::SetCursorPos(point1x * PICTUREWIDTH + LEFTGAP + r1.left + 15, point1y * PICTUREHEIGHT + UPGAP + r1.top + 17); //点击point1位置的图片
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);

点击后把相应位置的编码改为0.

至此基本的原理就讲完了。

我的界面里面,锁定是实现锁定和编码功能的。

消除是点击一下消除一个的。 这里要注意,每次点击后,要把鼠标的位置移动到辅助软件的消除键上,要不然点一样鼠标就保持在游戏窗口的某个图片上,还要人工的再把鼠标放到消除键上点击,非常麻烦。每次把鼠标移动到消除键上方便连续点击。

全消:顾名思义,一次全清。但问题是360总会冒出来,把屏幕给占了,导致点击出错。如果有安全软件弹出来需要重新锁定。

自动消除:全消虽然爽,但是容易招骂。自动消除就是会隔200ms-1200ms的随机时间点击一下。看起来比较真实。问题是,在自动消除的过程中,鼠标一直是被占用的,难以中途停止。我加了一个窗口移位检测,每次消除前重新获取一下窗口位置,如果改变了就停止,并弹出消息。这样可以防止意外情况。

升级:没有实现。

帮助:顾名思义,就是使用说明。

发布版本:

把属性的Release配置中的的MFC使用改成在静态库中使用MFC

平台工具集改为 Visual Studio 2012 - Windows XP(v110_xp) 没有这个选项的需要下载补丁。

问题:

1.所有的工作都不能出现意外,如果说在自动消除的过程中,有个人给扔了个禁手的道具,辅助工具是检测不出来的,并且还会不断的点击屏幕。这时必须晃动窗口退出自动消除,再重新锁定。

2.在扩展屏上,这个外挂会失效。必须去掉扩展屏。

工具和源码下载:

http://yun.baidu.com/share/link?shareid=2181599825&uk=2757788903

时间: 2024-11-05 18:44:24

【好玩的应用】QQ连连看辅助工具的相关文章

c#QQ连连看辅助

近来无事,写个连连看辅助,下面先说下思路吧(口才不行,见谅哈) 游戏辅助有三种方法,一种是读内存,这个不知道怎么分析,还有一种是获取封包,这个分析起来复杂,最后一种是图片识别再分析,这里采用最后一种 图片识别来做. 设计UI如下 连连看开始>启动辅助>得到游戏窗口信息(位置,大小)>将游戏窗口置顶(其实就是激活状态),并恢复默认状态>截取整个屏幕保存起来>得到游戏区域的坐标信息>分割游戏区域将每一块的大小,位置,并在其上面取9个点的颜色值,存入到List<List

QQ连连看-外挂

QQ连连看-外挂 2014-11-06 参考 [1] [视频教程] c语言实践课程之qq连连看辅助开发 [2] CE工具下载 [3] [原创]qq连连看外挂制作详解

Python实现的QQ空间3366小游戏彩色砖块的辅助工具

由于女朋友每天玩这个小游戏,每天挑战我……囧,只好写了一个辅助工具帮我自动满分,最后的结果是大家一起满分……本人不是程序员,请大家指正. 主要使用了PIL模块和pymouse模块,一个做图像识别,另一个做自动点击,这个小工具只在我的电脑,Python2.5+XP下测试通过. # -*- coding: utf-8 -*- #这是一个QQ空间3366小游戏中的彩色砖块游戏的辅助工具 #他可以帮你自动计算一种正确的算法,保证你得200分! #使用时不能有任何窗口遮挡游戏界面,同时也不能做其他操作 #

三个有用的SQL辅助工具

编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信大家在平时的开发项目中,肯定遇到过,对表或表的字段记录清的问题,如果SQL有智能提示功能岂不妙哉,不用担心,早有人帮我们开发出了此类工具,在这个互联网的时代,只有想不到的,没有做不到的.这不在SQL 2008就引进了智能提示功能,但微软做的又不够好,提示速度超慢不说,还不能进行格式操作,在VS中都有代码的格式化功能,不知为何

Tacsail v3.0船舶设备辅助工具+vsRisk v2.6.5835.9078

Tacsail v3.0船舶设备辅助工具 Tacsail v3.0软件,链接到这些设计将会帮助你实现这一目标.链接到仪表系统(速度.风.位置.航向),Tacsail v3.0帮助分析和显示你船的性能.所有主要的仪器系统都受支持(包括特殊转换器的NMEA 0183或NMEA2000).通过人机友好的交互界面提供了反馈功能.可根据自己的喜好来配置它们.除了改善实时的态势感知能力,该软件还可以帮助你,该软件还可以让你记录由设备当时重放和分析,以及你选择性给出的数据.帆船通常配备你数量有限的电子仪器,这

微信公众号辅助工具汇总 推广加粉统统有

微信公众号运营是一门学问,要想做成一个微信大号没一些辅助工具那是奢望.工欲善其事必先利其器,公众号推广.公众号加粉.图文排版.微场景.H5页面.微信公众号导航...选择适合自己的软件善加利用,离成功更近一步了. 1.图文排版编辑器 秀米:xiumi.us易点编辑器:wxedit.yead.net135微信编辑器:http://www.135editor.com/扔赞微信编辑器:http://bianji.rengzan.com/小易微信编辑器:http://xiaoyi.e7wei.com/易点

讲师收益100%推广建议及辅助工具推荐

一. 常见推广方式整理二. 如何结合专属链接推广?下面我们举几个常见示例: 通过QQ群,将自己的教学目标提炼,用简单有力的几句话配合专属链接.那么如何找到意向学员?思路之一就是利用别人的精准流量鱼塘,将小鱼转化成自己的小鱼.而利用网络课程平台上曝光的QQ群这种方法来做自己的数据库很讨巧, 同时,网络课程平台上的课程划分很细致,你可以根据课程轻松的总结出该课程QQ群中的流量大致特点.就好比:听×××课程的,那么肯定有×××需求.听公考类课程的,那么肯定在备战公考了.听PS课程的,肯定想要学习PS.

最新:百度春节抢百万游戏--汤圆向前冲--辅助工具v1.0.0.2

https://www.cnblogs.com/Charltsing/p/ADBJumpTY.html 联系QQ:564955427 汤圆向前冲辅助工具 因为手残,用以前微信跳一跳的辅助工具改了一下,手工跳. 1.如果是xp sp3或者windows7 sp1,请百度下载安装.net 4.0或更高版本 2.本程序自带ADB,无需自行安装.想自己下载的用下面的链接,下载之后将ADB相关的三个文件放到本程序同一目录下 adb工具包最新2017Google官方版下载https://dl.google.

net辅助工具列表

最近对.net的辅助工具比较感兴趣,网上也已经有.net的十个必备工具的帖子了,这里提供了一份全面的工具列表: Code generation NVelocity CodeSmith X-Code .NET XGoF - NMatrix / DEVerest Compilation eXtensible C# - ResolveCorp Mono DotGNU - GNU Obfuscation LSW-IL-Obfuscator - Lesser Software Demeanor for .