python之自动化连连看脚本-第二关下移-小记
(如想转载,请联系博主或贴上本博地址)
参考前一篇基础上,做出第二关下移逻辑判断,写的比较啰嗦。
下移和第一关不动基础代码是一样的。需要注意同列下移和不同列下移2种情况,同列下移需要注意相邻的2个和不相邻的2个;不同列下移,数组上一个数字依次下移即可。另需注意,2次点击的行号,第一种为第一次点击行号大于第二次,第二种反之。
下面直接上代码。连连看地址:http://www.4399.com/flash/80972.htm#search3
效果图:
# -*- coding:utf-8 -*-
from win32 import win32gui
import time
from PIL import ImageGrab, Image
import numpy as np
import operator
from pymouse import PyMouse
import win32gui class GameAssist: def __init__(self, wdname):
"""初始化""" # 取得窗口句柄
self.hwnd = win32gui.FindWindow(0, wdname)
if not self.hwnd:
print("窗口找不到,请确认窗口句柄名称:【%s】" % wdname )
exit() # 窗口显示最前面
win32gui.SetForegroundWindow(self.hwnd) # 小图标编号矩阵
self.im2num_arr = [] # 主截图的左上角坐标和右下角坐标
self.scree_left_and_right_point = (577, 289, 1043, 599)
# 小图标宽高
self.im_width = 39 # PyMouse对象,鼠标点击
self.mouse = PyMouse() def screenshot(self):
"""屏幕截图""" # 1、用grab函数截图,参数为左上角和右下角左标
# image = ImageGrab.grab((417, 257, 885, 569))
image = ImageGrab.grab(self.scree_left_and_right_point)
image.save('d:\\test\\1.jpg','jpeg')
# 2、分切小图
# exit()
image_list = {}
offset = self.im_width # 39 # 8行12列
for x in range(8):
image_list[x] = {}
for y in range(12):
# print("show",x, y)
# exit()
top = x * offset
left = y * offset
right = (y + 1) * offset
bottom = (x + 1) * offset # 用crop函数切割成小图标,参数为图标的左上角和右下角左边
im = image.crop((left, top, right, bottom))
# 将切割好的图标存入对应的位置
image_list[x][y] = im return image_list def image2num(self, image_list):
"""将图标矩阵转换成数字矩阵""" # 1、创建全零矩阵和空的一维数组
arr = np.zeros((10, 14), dtype=np.int32) # 以数字代替图片
image_type_list = [] # 2、识别出不同的图片,将图片矩阵转换成数字矩阵
for i in range(len(image_list)):
for j in range(len(image_list[0])):
im = image_list[i][j] # 验证当前图标是否已存入
index = self.getIndex(im, image_type_list) # 不存在image_type_list
if index < 0:
image_type_list.append(im)
arr[i + 1][j + 1] = len(image_type_list)
else:
arr[i + 1][j + 1] = index + 1 print("图标数:", len(image_type_list)) self.im2num_arr = arr
return arr # 检查数组中是否有图标,如果有则返回索引下表
def getIndex(self,im, im_list):
for i in range(len(im_list)):
if self.isMatch(im, im_list[i]):
return i return -1 # 汉明距离判断两个图标是否一样
def isMatch(self, im1, im2): # 缩小图标,转成灰度
image1 = im1.resize((20, 20), Image.ANTIALIAS).convert("L")
image2 = im2.resize((20, 20), Image.ANTIALIAS).convert("L") # 将灰度图标转成01串,即系二进制数据
pixels1 = list(image1.getdata())
pixels2 = list(image2.getdata()) avg1 = sum(pixels1) / len(pixels1)
avg2 = sum(pixels2) / len(pixels2)
hash1 = "".join(map(lambda p: "1" if p > avg1 else "0", pixels1))
hash2 = "".join(map(lambda p: "1" if p > avg2 else "0", pixels2)) # 统计两个01串不同数字的个数
match = sum(map(operator.ne, hash1, hash2))
#print(len(hash1))
#print(len(hash2)) # 阀值设为10
return match < 48 # 判断矩阵是否全为0
def isAllZero(self, arr):
for i in range(1, 9):
for j in range(1, 13):
if arr[i][j] != 0:
return False
return True # 是否为同行或同列且可连
def isReachable(self, x1, y1, x2, y2):
# 1、先判断值是否相同
#if self.im2num_arr[x1][y1] == self.im2num_arr[x2][y2]:
# return True
if self.im2num_arr[x1][y1] != self.im2num_arr[x2][y2]:
return False # 1、分别获取两个坐标同行或同列可连的坐标数组
list1 = self.getDirectConnectList(x1, y1)
list2 = self.getDirectConnectList(x2, y2)
# print(x1, y1, list1)
# print(x2, y2, list2) # exit() # 2、比较坐标数组中是否可连
for x1, y1 in list1:
for x2, y2 in list2:
if self.isDirectConnect(x1, y1, x2, y2):
return True
return False # 获取同行或同列可连的坐标数组
def getDirectConnectList(self, x, y): plist = []
for px in range(0, 10):
for py in range(0, 14):
# 获取同行或同列且为0的坐标
if self.im2num_arr[px][py] == 0 and self.isDirectConnect(x, y, px, py):
#if (x==px or y==py) and self.isDirectConnect(x, y, px, py):
plist.append([px, py])
#time.sleep(0.1)
#print(plist) return plist # 是否为同行或同列且可连
def isDirectConnect(self, x1, y1, x2, y2):
# 1、位置完全相同
if x1 == x2 and y1 == y2:
return False # 2、行列都不同的
if x1 != x2 and y1 != y2:
return False # 3、同行
if x1 == x2 and self.isRowConnect(x1, y1, y2):
return True # 4、同列
if y1 == y2 and self.isColConnect(y1, x1, x2):
return True return False # 判断同行是否可连
def isRowConnect(self, x, y1, y2):
minY = min(y1, y2)
maxY = max(y1, y2) # 相邻直接可连
if maxY - minY == 1:
return True # 判断两个坐标之间是否全为0
for y0 in range(minY + 1, maxY):
if self.im2num_arr[x][y0] != 0:
return False
return True # 判断同列是否可连
def isColConnect(self, y, x1, x2):
minX = min(x1, x2)
maxX = max(x1, x2) # 相邻直接可连
if maxX - minX == 1:
return True # 判断两个坐标之间是否全为0
for x0 in range(minX + 1, maxX):
if self.im2num_arr[x0][y] != 0:
return False
return True # 点击事件并设置数组为0
def clickAndSetZero(self, x1, y1, x2, y2):
# print("click", x1, y1, x2, y2) # (299, 251, 768, 564)
# 原理:左上角图标中点 + 偏移量
p1_x = int(self.scree_left_and_right_point[0] + (y1 - 1)*self.im_width + (self.im_width / 2))
p1_y = int(self.scree_left_and_right_point[1] + (x1 - 1)*self.im_width + (self.im_width / 2)) p2_x = int(self.scree_left_and_right_point[0] + (y2 - 1)*self.im_width + (self.im_width / 2))
p2_y = int(self.scree_left_and_right_point[1] + (x2 - 1)*self.im_width + (self.im_width / 2)) time.sleep(0.1)
self.mouse.press(p1_x, p1_y)
time.sleep(0.1)
self.mouse.press(p2_x, p2_y) # 设置矩阵值为0
#while self.im2num_arr[x1][y1-1]!=0
#上面都是0没有图标,就置矩阵值为0
if y1==y2:
self.im2num_arr[x1][y1] = 0
self.im2num_arr[x2][y2] = 0
if x1>x2 and x1-x2>=1:
if x1-x2==1:
if self.im2num_arr[x2-1][y2]!=0 and x2==2:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = 0
self.im2num_arr[x1-1][y1] = 0
elif self.im2num_arr[x2-1][y2]!=0 and x2==3:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = 0
self.im2num_arr[x1-3][y1] = 0
elif self.im2num_arr[x2-1][y2]!=0 and x2==4:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = 0
self.im2num_arr[x1-4][y1] = 0
elif self.im2num_arr[x2-1][y2]!=0 and x2==5:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = 0
self.im2num_arr[x1-5][y1] = 0
elif self.im2num_arr[x2-1][y2]!=0 and x2==6:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
self.im2num_arr[x1-6][y1] = 0
elif self.im2num_arr[x2-1][y2]!=0 and x2==7:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-6][y1] = 0
self.im2num_arr[x1-7][y1] = 0
print("相邻的2个")
elif x1-x2==2:
if x1==8:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-6][y1] = 0
self.im2num_arr[x1-7][y1] = 0
elif x1==7:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
self.im2num_arr[x1-6][y1] = 0
elif x1==6:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = 0
self.im2num_arr[x1-5][y1] = 0
elif x1==5:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = 0
self.im2num_arr[x1-4][y1] = 0
elif x1==4:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-2][y1] = 0
self.im2num_arr[x1-3][y1] = 0
elif x1==3:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = 0
self.im2num_arr[x1-2][y1] = 0 #self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
#self.im2num_arr[x1-1][y1] = 0
elif x1-x2==3:
if x1==8:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-6][y1] = 0
self.im2num_arr[x1-7][y1] = 0
elif x1==7:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
self.im2num_arr[x1-6][y1] = 0
elif x1==6:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = 0
self.im2num_arr[x1-5][y1] = 0
elif x1==5:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-3][y1] = 0
self.im2num_arr[x1-4][y1] = 0
elif x1==4:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = 0
self.im2num_arr[x1-3][y1] = 0
elif x1-x2==4:
if x1==8:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-6][y1] = 0
self.im2num_arr[x1-7][y1] = 0
elif x1==7:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
self.im2num_arr[x1-6][y1] = 0
elif x1==6:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-4][y1] = 0
self.im2num_arr[x1-5][y1] = 0
elif x1==5:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = 0
self.im2num_arr[x1-4][y1] = 0
elif x1-x2==5:
if x1==8:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-6][y1] = 0
self.im2num_arr[x1-7][y1] = 0
elif x1==7:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
self.im2num_arr[x1-6][y1] = 0
elif x1==6:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-5][y1] = 0
elif x1-x2==6:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = 0
elif x1-x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-6][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-7][y1] = 0
elif x2>x1:
if x2-x1==1:
if self.im2num_arr[x1-1][y2]!=0 and x1==2:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = 0
self.im2num_arr[x2-1][y1] = 0
elif self.im2num_arr[x1-1][y2]!=0 and x1==3:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = 0
self.im2num_arr[x2-3][y1] = 0
elif self.im2num_arr[x1-1][y2]!=0 and x1==4:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = 0
self.im2num_arr[x2-4][y1] = 0
elif self.im2num_arr[x1-1][y2]!=0 and x1==5:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = 0
self.im2num_arr[x2-5][y1] = 0
elif self.im2num_arr[x1-1][y2]!=0 and x1==6:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
self.im2num_arr[x2-6][y1] = 0
elif self.im2num_arr[x1-1][y2]!=0 and x1==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2-x1==2:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
self.im2num_arr[x2-6][y1] = 0
elif x2==6:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = 0
self.im2num_arr[x2-5][y1] = 0
elif x2==5:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = 0
self.im2num_arr[x2-4][y1] = 0
elif x2==4:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-2][y1] = 0
self.im2num_arr[x2-3][y1] = 0
elif x2==3:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = 0
self.im2num_arr[x2-2][y1] = 0
elif x2-x1==3:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
self.im2num_arr[x2-6][y1] = 0
elif x2==6:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = 0
self.im2num_arr[x2-5][y1] = 0
elif x2==5:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-3][y1] = 0
self.im2num_arr[x2-4][y1] = 0
elif x2==4:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = 0
self.im2num_arr[x2-3][y1] = 0
elif x2-x1==4:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
self.im2num_arr[x2-6][y1] = 0
elif x2==6:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-4][y1] = 0
self.im2num_arr[x2-5][y1] = 0
elif x2==5:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = 0
self.im2num_arr[x2-4][y1] = 0
elif x2-x1==5:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
self.im2num_arr[x2-6][y1] = 0
elif x2==6:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-5][y1] = 0
elif x2-x1==6:
if x2==8:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-6][y1] = 0
self.im2num_arr[x2-7][y1] = 0
elif x2==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = 0
elif x2-x1==7:
self.im2num_arr[x2][y1] = self.im2num_arr[x2-1][y1]
self.im2num_arr[x2-1][y1] = self.im2num_arr[x2-2][y1]
self.im2num_arr[x2-2][y1] = self.im2num_arr[x2-3][y1]
self.im2num_arr[x2-3][y1] = self.im2num_arr[x2-4][y1]
self.im2num_arr[x2-4][y1] = self.im2num_arr[x2-5][y1]
self.im2num_arr[x2-5][y1] = self.im2num_arr[x2-6][y1]
self.im2num_arr[x2-6][y1] = self.im2num_arr[x2-7][y1]
self.im2num_arr[x2-7][y1] = 0 else:
if self.im2num_arr[x1-1][y1] == 0:
self.im2num_arr[x1][y1] = 0
#上面有图标判定,最多有7层,共8行。
# 第一个图标判定7层
elif self.im2num_arr[x1-1][y1]!=0 and x1-2==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1]=0
elif self.im2num_arr[x1-1][y1]!=0 and x1-3==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1]=0
#time.sleep(0.1)
elif self.im2num_arr[x1-1][y1]!=0 and x1-4==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1]=0
#time.sleep(0.1)
elif self.im2num_arr[x1-1][y1]!=0 and x1-5==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1]=0
#time.sleep(0.2)
elif self.im2num_arr[x1-1][y1]!=0 and x1-6==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-5][y1]=0
#time.sleep(0.2)
elif self.im2num_arr[x1-1][y1]!=0 and x1-7==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-6][y1]=0
time.sleep(0.1)
elif self.im2num_arr[x1-1][y1]!=0 and x1-8==0:
self.im2num_arr[x1][y1] = self.im2num_arr[x1-1][y1]
self.im2num_arr[x1-1][y1] = self.im2num_arr[x1-2][y1]
self.im2num_arr[x1-2][y1] = self.im2num_arr[x1-3][y1]
self.im2num_arr[x1-3][y1] = self.im2num_arr[x1-4][y1]
self.im2num_arr[x1-4][y1] = self.im2num_arr[x1-5][y1]
self.im2num_arr[x1-5][y1] = self.im2num_arr[x1-6][y1]
self.im2num_arr[x1-6][y1] = self.im2num_arr[x1-7][y1]
self.im2num_arr[x1-7][y1]=0
time.sleep(0.1)
elif self.im2num_arr[x1-1][y1] == 0 and x1==8:
self.im2num_arr[x1][y1] = 0 #第二个图标判定7层
if self.im2num_arr[x2-1][y2] == 0:
self.im2num_arr[x2][y2] = 0
#上面有图标判定,最多有7层,共8行。
# 第一个图标判定7层
elif self.im2num_arr[x2-1][y2]!=0 and x2-2==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2]=0
#time.sleep(0.1)
elif self.im2num_arr[x2-1][y2]!=0 and x2-3==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2]=0
#time.sleep(0.2)
elif self.im2num_arr[x2-1][y2]!=0 and x2-4==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2] = self.im2num_arr[x2-3][y2]
self.im2num_arr[x2-3][y2]=0
#time.sleep(0.2)
elif self.im2num_arr[x2-1][y2]!=0 and x2-5==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2] = self.im2num_arr[x2-3][y2]
self.im2num_arr[x2-3][y2] = self.im2num_arr[x2-4][y2]
self.im2num_arr[x2-4][y2]=0
#time.sleep(0.3)
elif self.im2num_arr[x2-1][y2]!=0 and x2-6==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2] = self.im2num_arr[x2-3][y2]
self.im2num_arr[x2-3][y2] = self.im2num_arr[x2-4][y2]
self.im2num_arr[x2-4][y2] = self.im2num_arr[x2-5][y2]
self.im2num_arr[x2-5][y2]=0
time.sleep(0.1)
elif self.im2num_arr[x2-1][y2]!=0 and x2-7==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2] = self.im2num_arr[x2-3][y2]
self.im2num_arr[x2-3][y2] = self.im2num_arr[x2-4][y2]
self.im2num_arr[x2-4][y2] = self.im2num_arr[x2-5][y2]
self.im2num_arr[x2-5][y2] = self.im2num_arr[x2-6][y2]
self.im2num_arr[x2-6][y2]=0
time.sleep(0.1)
elif self.im2num_arr[x2-1][y2]!=0 and x2-8==0:
self.im2num_arr[x2][y2] = self.im2num_arr[x2-1][y2]
self.im2num_arr[x2-1][y2] = self.im2num_arr[x2-2][y2]
self.im2num_arr[x2-2][y2] = self.im2num_arr[x2-3][y2]
self.im2num_arr[x2-3][y2] = self.im2num_arr[x2-4][y2]
self.im2num_arr[x2-4][y2] = self.im2num_arr[x2-5][y2]
self.im2num_arr[x2-5][y2] = self.im2num_arr[x2-6][y2]
self.im2num_arr[x2-6][y2] = self.im2num_arr[x2-7][y2]
self.im2num_arr[x2-7][y2] = 0
time.sleep(0.1)
elif self.im2num_arr[x2-1][y2] == 0 and x2==8:
self.im2num_arr[x2][y2] = 0
time.sleep(0.2)
print("消除:(%d, %d) (%d, %d)" % (x1, y1, x2, y2))
# 程序入口、控制中心
def start(self): # 1、先截取游戏区域大图,然后分切每个小图
image_list = self.screenshot() # 2、识别小图标,收集编号
self.image2num(image_list) print(self.im2num_arr) # 3、遍历查找可以相连的坐标
while not self.isAllZero(self.im2num_arr):
for x1 in range(1, 9):
#for y1 in range(1, 13):
for y1 in range(1, 13):
if self.im2num_arr[x1][y1] == 0:
#print("已经为0的坐标")
continue for x2 in range(1, 9):
for y2 in range(1, 13):
# 跳过为0 或者同一个
if (self.im2num_arr[x2][y2] == 0 or self.im2num_arr[x1][y1] == 0) or (x1 == x2 and y1 == y2):
continue
if self.isReachable(x1, y1, x2, y2):
self.clickAndSetZero(x1, y1, x2, y2) if __name__ == "__main__":
# wdname 为连连看窗口的名称,必须写完整
wdname = '宠物连连看经典版2,宠物连连看经典版2小游戏,4399小游戏 www.4399.com - Google Chrome'
demo = GameAssist(wdname)
demo.start()
python之自动化连连看脚本-第二关下移-小记的更多相关文章
- Appium+Python app自动化测试之脚本启动和停止Appium服务
研究了一段时间的Appium android app的自动化测试,工作中需要连接多台手机终端同时执行测试用例,我实现的方式是获取用例中需要执行用例的设备id个数以及实际连接到的设备数(通过adb de ...
- [python]MS17-010自动化扫描脚本
一种是3gstudent分享的调用Nsa泄露的smbtouch-1.1.1.exe实现验证,另一种是参考巡风的poc.这里整合学习了下两种不同的方法. import os import fileinp ...
- Appium + Python App自动化第一个脚本
今天跟大家讲解一个Appium和Python App自动化的脚本.[1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面[4]拖动你 ...
- python+paramiko库+svn写的自动化部署脚本
第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...
- python自动化执行脚本
---恢复内容开始--- 1 (1)首先在你的.py文件上加上一行代码注释: #!/usr/local/bin/python2.7 (2)终端下执行: crontab -e 进入后,输入i 进入可编辑 ...
- 《转载》Jenkins持续集成-自动化部署脚本的实现《python》
本文转载自慕课网 读者须知:1.本手记本着记续接前面的两张手记内容整理2.本手记针对tomcat部署测试环境实现 最近工作比较繁忙,导致这章一直拖延,没有太抽出时间来总结.要实现Jenkins端的持续 ...
- 【Linux】CentOS下升级Python和Pip版本全自动化py脚本
[Linux]CentOS下升级Python和Pip版本全自动化py脚本 CentOS7.6自带py2.7和py3.6 想要安装其它版本的话就要自己重新下载和编译py其它版本并且配置环境,主要是软链接 ...
- Python:黑板课爬虫闯关第二关
第二关依然是非常的简单 地址:http://www.heibanke.com/lesson/crawler_ex01/ 随便输入昵称呢密码,点击提交,显示如下: 这样看来就很简单了,枚举密码循环 po ...
- Python Challenge 第二关
第二关和第一关一样,还是一幅图和一行提示.提示说的是: recognize the characters. maybe they are in the book, but MAYBE they are ...
- 转:python常用运维脚本实例
python常用运维脚本实例 转载 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...
随机推荐
- 方法综合练习:out、params、ref
using System; namespace ConsoleApp1 { class Program { /// <summary> /// 求两个参数之间的最大值 /// </s ...
- PMP学习:弱势乙方如何利用阶段性需求固化搞定甲方
- 集群笔记-fence
fence机制: 隔离主机到存储的连接 配置fence_xvm步骤 KVM fence 请问物理机器需要真实的fence 设备吗? 否 一.将物理机器(宿主机)f0配置成fence设备 1. 安装fe ...
- pyhon_元组(tuple)
定义: 元组中可以存储不一样类型的数据,使用小括号存储数据,中间用逗号进行分割. 元组中的数据定义好后,无法进行修改,有保护数据的目的. 格式化字符串定义多个值的时候,本质上也是元组. 测试: inf ...
- React使用portal提示 The types returned by 'render()' are incompatible between these types. Type 'ReactPortal' is not assignable to type 'ReactNode'. Type '{}' is not assignable to type 'ReactNode'.
原因:组件返回了个不是<></>的东西 原先代码: export default class Index extends React.PureComponent { rende ...
- 自定义go语言日志输出
自定义输出符合下列需求: 1.含两类日志输出方式:调试模式下输出到控制台:生产环境输出到日志文件 2.调用不同的函数/方法构造不同的输出方式,后续只需调用日志级别对应的函数即可输出该级别日志 工具构造 ...
- java 类对象四种方法加载方式
public static void main(String[] args) throws Exception { //第一种 //这里需要做异常处理,或的加载类的类对象类. Class<?&g ...
- noi 1.5 28 分离整数的各个数位
描述 给定一个整数,要求从个位开始分离出它的每一位数字. 输入 输入一个整数,整数在1到100000000之间. 输出 从个位开始按照从低位到高位的顺序依次输出每一位数字.数字之间以一个空格分开. 样 ...
- 苹果公司对蓝牙免提AT指令的扩充
介绍 苹果公司对蓝牙HF profile进行了一些HF AT指令的扩充.不过为了兼容起见,尽量实现HF标准规范规定的内容,如果标准规范没有规定相应的内容,为了适配苹果设备新增的功能,还是可以适应苹果公 ...
- django前后端分离接口开发
用django进行接口开发 接口: /api/parameter (同一个接口地址实现不同的请求方式) 全局参数(get,post,put,delete) GET:获取全局参数的所有数据 POST:创 ...