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))
完整程序1
最新推荐文章于 2024-06-16 10:55:10 发布