连连看读游戏界面的图

import win32api
import win32gui
import pandas as pd
import numpy as np
import struct

def scan_game_board():
    hwnd=win32gui.FindWindow(None, "QQ游戏 - 连连看角色版") #找到连连看的窗口
    try:
        # bring window to front and active
        win32gui.SetForegroundWindow(hwnd)
        win32gui.SetActiveWindow(hwnd)
    except win32gui.error as e:
        print("Haven't open the game!", e)  # 如果没打开游戏界面,用except报错
    # win32api.SetCursorPos((100,100))  # 移开鼠标
    hdc = win32gui.GetWindowDC(hwnd)  # 获取窗口的环境数据,返回的是一个数据结构,包含了字体、颜色等信息
    board_width, board_height = 19, 11  # 连连看窗口由11行,19列图案组成
    array = pd.DataFrame(np.zeros((board_height,board_width)))#用一个11x19数组存储所有方块中心颜色,并初始化0
    print(win32gui.GetClientRect(hwnd))
    #print(win32gui.GetPixel(hdc, 601,37))

    for j in range(board_width):
        for i in range(board_height):
            card_mid_width = 9 + j * 31 + 13  #简化,只取每个方块最中心一个颜色,然后暴力点击所有相同中心点颜色的方块
            card_mid_height = 180 + i * 35 + 13 #这个公式是怎么算出来的,还不知道!!!
            print(str(card_mid_width) + "   " + str(card_mid_height))
            mid_color = win32gui.GetPixel(hdc, card_mid_width,card_mid_height)
            if mid_color != 7359536: #如果不是背景颜色,就赋值
                array.iloc[i,j]=mid_color
    return array



a=scan_game_board()
pd.set_option('display.max_columns', None)
print(a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值