QQ连连看图像分析实现辅助__源码

/*
2025-1-25

本程序使用小熊猫C++IDE编写
本程序是cui控制台应用程序.
本程序使用ege图形库和MinGW-w64编译器.
本程序源文件为utf-8编码.
编译时请加入"-finput-charset=UTF-8 -fexec-charset=gbk"选项.

链接时请加入-lgraphics  -lgdiplus -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lwinmm选项
*/

#include <windows.h>
#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>

#define 宏_左边_横坐标 15
#define 宏_左边_纵坐标 182
#define 宏_方块宽度 31
#define 宏_方块高度 35
#define 宏_行数 11
#define 宏_列数 19

typedef struct
{
    int x;
    int y;
} _point;

_point 坐标1, 坐标2;
PIMAGE 图片数组[宏_行数][宏_列数];
int 图片编号数组[宏_行数][宏_列数], 无可消除的图片校验值1, 无可消除的图片校验值2;

bool 是否为空白图片 ( PIMAGE 图片指针 );
bool 两个图片是否相同 ( PIMAGE 图片1, PIMAGE 图片2 );
bool havePathCorner0 ( _point p1, _point p2 );
_point havePathCorner1 ( _point p1, _point p2 );
_point *havePathCorner2 ( _point p1, _point p2 );
bool havePath ( _point p1, _point p2 );

int main ( void )
{
    HWND 连连看窗口句柄 = FindWindowA ( NULL, "QQ游戏 - 连连看角色版" );
    if ( !连连看窗口句柄 )
    {
        printf ( "获取连连看窗口句柄失败!\n" );
        return 0;
    }
    SetWindowPos ( 连连看窗口句柄, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
    SwitchToThisWindow ( 连连看窗口句柄, 1 );
    api_sleep ( 100 );
    printf ( "连连看窗口句柄:%u\n", ( unsigned int ) 连连看窗口句柄 );
    HDC 连连看设备上下文句柄 = GetDC ( 连连看窗口句柄 );
    printf ( "连连看设备上下文句柄:%u\n", ( unsigned int ) 连连看设备上下文句柄 );
    PIMAGE 图片指针 = newimage ( 800, 600 );
    HDC 图片设备上下文句柄 = getHDC ( 图片指针 );
标签:
    BitBlt ( 图片设备上下文句柄, 0, 0, 800, 600, 连连看设备上下文句柄, 0, 0, SRCCOPY );
    setviewport ( 宏_左边_横坐标, 宏_左边_纵坐标, 801, 601, 1, 图片指针 );

    if ( ( getpixel ( 420, 400, 图片指针 ) & 0xffffff )  != ( EGERGB ( 48, 76, 112 ) & 0xffffff ) || ( getpixel ( 332, 171, 图片指针 ) & 0xffffff )  ==  ( EGERGB ( 248, 204, 88 ) & 0xffffff ) )
    {
        printf ( "没有开始游戏!\n" );
        goto 结束;
    }

    for ( int 行数 = 0; 行数 < 宏_行数; 行数++ )
        for ( int 列数 = 0; 列数 < 宏_列数; 列数++ )
        {
            图片数组[行数][列数] = newimage();
            getimage ( 图片数组[行数][列数], 图片指针, 列数*宏_方块宽度, 行数*宏_方块高度, 宏_方块宽度, 宏_方块高度 );
            图片编号数组[行数][列数] = -1;       //将图片编号数组的所有成员全部初始化为-1.
            if ( 是否为空白图片 ( 图片数组[行数][列数] ) )
                图片编号数组[行数][列数] = 0;  //将空图片所对应的的图片编号数组成员赋值为0.
        }

    for ( int 行数 = 0, 计数器 = 1; 行数 < 宏_行数; 行数++ )
        for ( int 列数 = 0; 列数 < 宏_列数; 列数++ )
        {
            if ( 图片编号数组[行数][列数] == -1 )
            {
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漫漫人生路_SUI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值