可以修改qq小游戏的修改器 QQ小游戏辅助


前言
Python 实现的qq连连看辅助, 仅用于学习, 请在练习模式下使用, 请不要拿去伤害玩家们...
作者:Laziji
源自:
https://laboo.top/2018/11/07/lianliankan/


基本环境配置
版本:Python3.6
系统:Windows
相关模块:
import PIL.ImageGrabimport pyautoguiimport win32apiimport win32guiimport win32conimport timeimport random

使用方法
开始游戏后运行就行了, 再次提示, 请在练习模式中使用, 否则可能会被其他玩家举报


效果图


可以修改qq小游戏的修改器 QQ小游戏辅助

文章插图

可以修改qq小游戏的修改器 QQ小游戏辅助

文章插图

【可以修改qq小游戏的修改器 QQ小游戏辅助】

代码实现
import PIL.ImageGrabimport pyautoguiimport win32apiimport win32guiimport win32conimport timeimport random\'\'\'想要学习Python?Python学习交流群:452739833满足你的需求,资料都已经上传群文件流,可以自行下载!\'\'\'def color_hash(color):valuehttps://www.baikexueshe.com/s/= ""for i in range(5):value += "%d,%d,%d," % (color[0], color[1], color[2])return hash(value)def image_hash(img):valuehttps://www.baikexueshe.com/s/= ""for i in range(5):c = img.getpixel((i * 3, i * 3))value += "%d,%d,%d," % (c[0], c[1], c[2])return hash(value)def game_area_image_to_matrix():pos_to_image = {}for row in range(ROW_NUM):pos_to_image[row] = {}for col in range(COL_NUM):grid_left = col * grid_widthgrid_top = row * grid_heightgrid_right = grid_left + grid_widthgrid_bottom = grid_top + grid_heightgrid_image = game_area_image.crop((grid_left, grid_top, grid_right, grid_bottom))pos_to_image[row][col] = grid_imagepos_to_type_id = {}image_map = {}empty_hash = color_hash((48, 76, 112))for row in range(ROW_NUM):pos_to_type_id[row] = {}for col in range(COL_NUM):this_image = pos_to_image[row][col]this_image_hash = image_hash(this_image)if this_image_hash == empty_hash:pos_to_type_id[row][col] = 0continueimage_map.setdefault(this_image_hash, len(image_map) + 1)pos_to_type_id[row][col] = image_map.get(this_image_hash)return pos_to_type_iddef solve_matrix_one_step():for key in map:arr = map[key]arr_len = len(arr)for index1 in range(arr_len - 1):point1 = arr[index1]x1 = point1[0]y1 = point1[1]for index2 in range(index1 + 1, arr_len):point2 = arr[index2]x2 = point2[0]y2 = point2[1]if verifying_connectivity(x1, y1, x2, y2):arr.remove(point1)arr.remove(point2)matrix[y1][x1] = 0matrix[y2][x2] = 0if arr_len == 2:map.pop(key)return y1, x1, y2, x2def verifying_connectivity(x1, y1, x2, y2):max_y1 = y1while max_y1 + 1 < ROW_NUM and matrix[max_y1 + 1][x1] == 0:max_y1 += 1min_y1 = y1while min_y1 - 1 >= 0 and matrix[min_y1 - 1][x1] == 0:min_y1 -= 1max_y2 = y2while max_y2 + 1 < ROW_NUM and matrix[max_y2 + 1][x2] == 0:max_y2 += 1min_y2 = y2while min_y2 - 1 >= 0 and matrix[min_y2 - 1][x2] == 0:min_y2 -= 1rg_min_y = max(min_y1, min_y2)rg_max_y = min(max_y1, max_y2)if rg_max_y >= rg_min_y:for index_y in range(rg_min_y, rg_max_y + 1):min_x = min(x1, x2)max_x = max(x1, x2)flag = Truefor index_x in range(min_x + 1, max_x):if matrix[index_y][index_x] != 0:flag = Falsebreakif flag:return Truemax_x1 = x1while max_x1 + 1 < COL_NUM and matrix[y1][max_x1 + 1] == 0:max_x1 += 1min_x1 = x1while min_x1 - 1 >= 0 and matrix[y1][min_x1 - 1] == 0:min_x1 -= 1max_x2 = x2while max_x2 + 1 < COL_NUM and matrix[y2][max_x2 + 1] == 0:max_x2 += 1min_x2 = x2while min_x2 - 1 >= 0 and matrix[y2][min_x2 - 1] == 0:min_x2 -= 1rg_min_x = max(min_x1, min_x2)rg_max_x = min(max_x1, max_x2)if rg_max_x >= rg_min_x:for index_x in range(rg_min_x, rg_max_x + 1):min_y = min(y1, y2)max_y = max(y1, y2)flag = Truefor index_y in range(min_y + 1, max_y):if matrix[index_y][index_x] != 0:flag = Falsebreakif flag:return Truereturn Falsedef execute_one_step(one_step):from_row, from_col, to_row, to_col = one_stepfrom_x = game_area_left + (from_col + 0.5) * grid_widthfrom_y = game_area_top + (from_row + 0.5) * grid_heightto_x = game_area_left + (to_col + 0.5) * grid_widthto_y = game_area_top + (to_row + 0.5) * grid_heightpyautogui.moveTo(from_x, from_y)pyautogui.click()pyautogui.moveTo(to_x, to_y)pyautogui.click()if __name__ == \'__main__\':COL_NUM = 19ROW_NUM = 11screen_width = win32api.GetSystemMetrics(0)screen_height = win32api.GetSystemMetrics(1)hwnd = win32gui.FindWindow(win32con.NULL, \'QQ游戏 - 连连看角色版\')if hwnd == 0:exit(-1)win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)win32gui.SetForegroundWindow(hwnd)window_left, window_top, window_right, window_bottom = win32gui.GetWindowRect(hwnd)if min(window_left, window_top) < 0 or window_right > screen_width or window_bottom > screen_height:exit(-1)window_width = window_right - window_leftwindow_height = window_bottom - window_topgame_area_left = window_left + 14.0 / 800.0 * window_widthgame_area_top = window_top + 181.0 / 600.0 * window_heightgame_area_right = window_left + 603 / 800.0 * window_widthgame_area_bottom = window_top + 566 / 600.0 * window_heightgame_area_width = game_area_right - game_area_leftgame_area_height = game_area_bottom - game_area_topgrid_width = game_area_width / COL_NUMgrid_height = game_area_height / ROW_NUMgame_area_image = PIL.ImageGrab.grab((game_area_left, game_area_top, game_area_right, game_area_bottom))matrix = game_area_image_to_matrix()map = {}for y in range(ROW_NUM):for x in range(COL_NUM):grid_id = matrix[y][x]if grid_id == 0:continuemap.setdefault(grid_id, [])arr = map[grid_id]arr.append([x, y])pyautogui.PAUSE = 0while True:one_step = solve_matrix_one_step()if not one_step:exit(0)execute_one_step(one_step)time.sleep(random.randint(0,0)/1000)


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。