「 硬核分享」 ❤️ QQ连连看自动消除外挂完整源码❤️「 复制即用」

本文详细介绍了如何实现QQ连连看自动消除功能,包括分析游戏、读取棋盘数据、遍历棋盘及模拟鼠标点击的步骤。通过C++实现,提供了完整源码,帮助读者理解游戏辅助的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

效果展示:

逆向过程:

 1.分析游戏 

 2.读取棋盘数据

 3.遍历棋盘

 4.模拟鼠标点击

 5.程序源码


效果展示:

C++游戏辅助实战入门系列01 连连看自动消除

逆向过程:

 1.分析游戏
 


 棋盘大小:19 *11
 棋盘基址:00199F5C   CE工具下载: QQ群:894356239

 游戏标题:QQ游戏 - 连连看角色版

 2.读取棋盘数据

        //1.获取游戏窗口句柄
        HWND hw = FindWindowA(0, "QQ游戏 - 连连看角色版");
        //2.获取进程id
        DWORD pid;
        GetWindowThreadProcessId(hw, &pid);
        //获取进程句柄
        HANDLE hPro=OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
       //读取棋盘数据
        BYTE chessData[11][19];
        ReadProcessMemory(hPro, (LPVOID)0x199F5C, &chessData, 19 * 11, 0);

 3.遍历棋盘

 4.模拟鼠标点击


  第一个小方块的坐标:x=24 y=195
  
  第 i行 第j列的小方块坐标:x=24+j*31,y=195+i*35

  击一个方块:SendMessage(hw, WM_LBUTTONDOWN, 0,(j<<16)+i);
                        SendMessage(hw, WM_LBUTTONUP, 0, (j << 16) + i);

复制代码,请给此篇博客点赞,如有不理解之处可移至本人录制的视频教程:
 视频讲解

/*程序清单*/

//Author:See QQ:3492625357
#include <iostream>
#include <windows.h>
using namespace std;
HWND hw;//游戏窗口句柄
BYTE g_chessData[11][19];//保存棋盘的数据

bool getChessData()
{

    bool bRet = FALSE;
    do 
    {
        hw = FindWindowA(0, "QQ游戏 - 连连看角色版");
        if (hw==NULL)
        break;

        DWORD pid;
        GetWindowThreadProcessId(hw, &pid);

        HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
        if (hPro == NULL)
            break;

        if (!ReadProcessMemory(hPro, (LPVOID)0x199F5C, &g_chessData, 19 * 11, 0))
        break;
        
        bRet = TRUE;
    } while (FALSE);

    return bRet;
}

void PrintChessData()
{
    for (int i = 0; i < 11; i++)
    {
        for (int j = 0; j < 19; j++)
        {
            std::cout << (int)g_chessData[i][j] << "\t";
        }
        std::cout << std::endl;
    }
}

void Click2(int i, int j, int m, int n)
{
    //1.先点击第一个方块
    SendMessage(hw, WM_LBUTTONDOWN, 0,(j<<16)+i);
    SendMessage(hw, WM_LBUTTONUP, 0, (j << 16) + i);

    //2.点击第二个方块

    SendMessage(hw, WM_LBUTTONDOWN, 0, (n << 16) + m);
    SendMessage(hw, WM_LBUTTONUP, 0, (n << 16) + m);

}

void clearChess()
{
    if (getChessData())
    {
        for (int i = 0; i < 11; i++)
            for (int j = 0; j < 19; j++)
            {
                for (int m = 0; m < 11; m++)
                    for (int n = 0; n < 19; n++)
                    {
                        if (g_chessData[i][j] == g_chessData[m][n])
                        {
                            Click2(24 + j * 31, 195 + i * 35, 24 + n * 31, 195 + m * 35);
                        }
                    }
            }
    }
}
int main()
{
    char ch;
    while (1)
    {
        system("cls");
        cout << "****欢迎使用连连看助手****" << endl;
        cout << "****Y:开始消除  Q:退出****" << endl;
        cin >> ch;
        switch (ch)
        {
        case 'Y':
            clearChess();
            break;
        case 'Q':
            exit(1);
            break;
        default:
            cout << "输入有误,请重新输入" << endl;
            break;
        }
    }
}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈子青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值