完整程序1

import time

import win32api
import win32gui
import pandas as pd
import numpy as np
import win32con
import random


def scan_game_board(hwnd):
    try:
        win32gui.SetForegroundWindow(hwnd)
        win32gui.SetActiveWindow(hwnd)
    except win32gui.error as e:
        print("Haven't open the game!", e)
    board_width, board_height = 19, 11
    array = pd.DataFrame(np.zeros((board_height,board_width)))
    print(win32gui.GetClientRect(hwnd))

    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
            mid_color = win32gui.GetPixel(hdc, card_mid_width,card_mid_height)
            if mid_color != 7359536:
                array.iloc[i,j]=mid_color
    return array
hd=win32gui.FindWindow(None, "QQ游戏 - 连连看角色版")
hdc = win32gui.GetWindowDC(hd)
arr=scan_game_board(hd)
print("初始数组:\n", arr)

# 找出重复出现的元素
unique_nums = np.unique(arr)
unique_nums = unique_nums[unique_nums != 0]
same_nums = []
for num in unique_nums:
    if np.count_nonzero(arr == num) > 1:
        same_nums.append(num)
new_arrs = []
for num in same_nums:
    new_arr = np.argwhere(arr == num)
    new_arrs.append(new_arr)
print(new_arrs)
#
for k in range(8):
    for new_arr in new_arrs:
        for i in range(len(new_arr)):
            for j in range(i+1, len(new_arr)):
                print(new_arr[i], new_arr[j])
                print(new_arr[i][0])
                print(new_arr[i][1])
                print(new_arr[j][0])
                print(new_arr[j][1])
                x = 9 + new_arr[i][1] * 31 + 13
                y = 180 + new_arr[i][0] * 35 + 13
                x1 = 9 + new_arr[j][1] * 31 + 13
                y1 = 180 + new_arr[j][0] * 35 + 13
                print(win32gui.GetPixel(hdc,x,y))
                print(win32gui.GetPixel(hdc,x1,y1))
                l_param = win32api.MAKELONG(x, y)
                win32api.SendMessage(hd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, l_param)
                win32api.SendMessage(hd, win32con.WM_LBUTTONUP, 0, l_param)
                l_param1 = win32api.MAKELONG(x1, y1)
                win32api.SendMessage(hd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, l_param1)
                win32api.SendMessage(hd, win32con.WM_LBUTTONUP, 0, l_param1)
                time.sleep(0.2/(i+1)*random.randint(0, 1))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值