def decide(): existed = check_exists() if len(existed) == 0: exists = get_exists() existed = exists elif len(existed) == 3: existed = existed elif len(existed) != 0: exists = [i for i in range(5)] existss = [i for i in range(5)] for exist in existed: for exis in exists: tmp = f"./temp/servant{exist}.png" pic = f"./temp/{exis}.png" if check(pic, tmp, 0.9) == 1: existss.remove(exis) for existe in existss: tmp = f"./temp/s{existe}.png" for exise in existss: if existe != exise: pic = f"./temp/{exise}.png" if check(pic, tmp, 0.9) == 1: existss.remove(exise) for i in existss: im = Image.open(f"./temp/s{i}.png") im.save(f"./temp/servant{i}.png") existed = existed + existss print(existed) return existed
def match_servants(): servants = [] for i in range(5): if os.path.exists(f"./temp/servant{i}.png") == 1: servants.append(i) for j in range(len(servants)): nobles[j].servant = servants[j] img = Image.open("./temp/np.png") img_size = img.size gap = (img_size[0] - 1920) / 2 length = 384 # 1920/5 exactx = 210 orgx = gap + length + exactx height = img_size[1] exacty = height * 2 / 3 for servant in servants: templ = f"./temp/servant{servant}.png" for i in range(3): img = f"./temp/np{i}.png" if check(img, templ, 0.68) == 1: x = orgx + i * length y = exacty nobles[i].crd = [x, y]
def recover(self): apple_path = f"./assets/scene/{apple}.png" decide_path = f"./assets/scene/{decide}.png" if check(self.scene, apple_path, 0.9) == 1: position = filter_crd(self.scene, apple_path, 0.9) self.crd[0] = position[0][0] self.crd[1] = position[0][1] print("Apple: ", self.crd[0], self.crd[1]) basic_tap(self.crd[0], self.crd[1]) self.done = 1 if check(self.scene, decide_path, 0.9) == 1: position = filter_crd(self.scene, decide_path, 0.9) self.crd[0] = position[0][0] self.crd[1] = position[0][1] print("Decide: ", self.crd[0], self.crd[1]) basic_tap(self.crd[0], self.crd[1]) self.done = 2
def init_extra(): exists = decide() counts = [i for i in range(len(exists))] for count in counts: servants[count].order = exists[count] # mark servants for coun in counts: stmp = f"./temp/s{servants[coun].order}.png" for k in range(5): spic = f"./temp/{k}.png" if check(spic, stmp, 0.9) == 1: servants[coun].count.append(k)
def init_extra(): exists = [i for i in range(5)] # filter same servants for exist in exists: tmp = f"./temp/s{exist}.png" for exis in exists: if exist != exis: pic = f"./temp/{exis}.png" if check(pic, tmp, 0.9) == 1: exists.remove(exis) counts = [i for i in range(len(exists))] for count in counts: servants[count].order = exists[count] # mark servants for coun in counts: stmp = f"./temp/s{servants[coun].order}.png" for k in range(5): spic = f"./temp/{k}.png" if check(spic, stmp, 0.9) == 1: servants[coun].count.append(k)
def get_exists(): exists = [i for i in range(5)] # filter same servants for exist in exists: tmp = f"./temp/s{exist}.png" for exis in exists: if exist != exis: pic = f"./temp/{exis}.png" if check(pic, tmp, 0.9) == 1: exists.remove(exis) for i in exists: im = Image.open(f"./temp/s{i}.png") im.save(f"./temp/servant{i}.png") return exists
def pass_finish(self): for finish_scene in finish_scenes: scene_path = f"./assets/scene/{finish_scene}.png" if check(self.scene, scene_path, 0.9) == 1: im = Image.open(f"./{self.scene}") im_size = im.size x0 = im_size[0] / 4 y0 = im_size[0] / 4 x = random.randrange(-x0, x0) + (im_size[0] / 2) y = random.randrange(-y0, y0) + (im_size[1] / 2) self.crd = [x, y] out = "[FINISH] Checked: " + str(finish_scene) + " " + str(x) + " " + str(y) print(out) output_log(out) basic_tap(self.crd[0], self.crd[1])
from util.cvs import check # template path tmpl = "assets/battle/arts.png" # tested image path img = "assets/test/t2.jpeg" # the threshold threshold = 0.9 # match template result = check(img, tmpl, threshold) print(result)