示例#1
0
    def click_until_multi(self,
                          tag,
                          *img_path,
                          pos,
                          pos_end=None,
                          step_time=0.8):
        '''
        在某一时间段内,后台点击鼠标,直到出现列表中任一图片
            :param tag: 按键名
            :param img_path: 图片路径
            :param pos: (x,y) 鼠标单击的坐标
            :param pos_end=None: (x,y) 若pos_end不为空,则鼠标单击以pos为左上角坐标pos_end为右下角坐标的区域内的随机位置
            :step_time=0.5: 查询间隔
            :return: 成功返回True, 失败退出游戏
        '''
        # 在指定时间内反复监测画面并点击
        start_time = time.time()
        while time.time() - start_time <= self.max_op_time and self.run:
            # 点击指定位置
            self.yys.mouse_click_bg(pos, pos_end)
            self.log.info('点击 ' + tag)
            ut.mysleep(step_time * 1000)

            maxval, _ = self.yys.find_multi_img(*img_path)
            if max(maxval) > 0.9:
                self.log.info('点击 ' + tag + ' 成功')
                return True

        # 提醒玩家点击失败,并在5s后退出
        self.click_failed()
示例#2
0
    def click_until(self,
                    tag,
                    img_path,
                    pos,
                    pos_end=None,
                    step_time=0.8,
                    appear=True):
        '''
        在某一时间段内,后台点击鼠标,直到出现某一图片出现或消失
            :param tag: 按键名
            :param img_path: 图片路径
            :param pos: (x,y) 鼠标单击的坐标
            :param pos_end=None: (x,y) 若pos_end不为空,则鼠标单击以pos为左上角坐标pos_end为右下角坐标的区域内的随机位置
            :step_time=0.5: 查询间隔
            :appear: 图片出现或消失:Ture-出现;False-消失
            :return: 成功返回True, 失败退出游戏
        '''
        # 在指定时间内反复监测画面并点击
        start_time = time.time()
        while time.time() - start_time <= self.max_op_time and self.run:
            # 点击指定位置
            self.yys.mouse_click_bg(pos, pos_end)
            self.log.info('点击 ' + tag)
            ut.mysleep(step_time * 1000)

            result = self.yys.find_game_img(img_path)
            if not appear:
                result = not result
            if result:
                self.log.info('点击 ' + tag + ' 成功')
                return True

        # 提醒玩家点击失败,并在5s后退出
        self.click_failed()
示例#3
0
    def mitama_team_click(self):
        '''
        御魂标记己方式神
        '''
        num = self.mitama_team_mark
        if num > 0:
            # 100 1040
            # 125 50
            # 御魂场景获取标记位置
            min = (num - 1) * 105 + (num - 1) * 100 + 95
            max = min + 50
            pos = (min, 355), (max, 425)

            start_time = time.time()
            while time.time() - start_time <= 3:
                x1 = pos[0][0] - 100
                y1 = pos[0][1] - 250
                x2 = pos[1][0] + 100
                y2 = pos[1][1]
                exp_pos = self.yys.find_color(((x1, y1), (x2, y2)),
                                              (134, 227, 96), 5)
                # print('颜色位置', exp_pos)
                if exp_pos != -1:
                    self.log.info('标记式神成功')
                    return True
                else:
                    # 点击指定位置并等待下一轮
                    self.yys.mouse_click_bg(*pos)
                    self.log.info('标记式神')
                    ut.mysleep(500)

            self.log.warning('标记式神失败')
示例#4
0
    def click_until_knn(self, tag, img_path, pos, pos_end=None, step_time=0.5, appear=True, thread=0):
        '''
        在某一时间段内,后台点击鼠标,直到出现某一图片出现或消失
            :param tag: 按键名
            :param img_path: 图片路径
            :param pos: (x,y) 鼠标单击的坐标
            :param pos_end=None: (x,y) 若pos_end不为空,则鼠标单击以pos为左上角坐标pos_end为右下角坐标的区域内的随机位置
            :step_time=0.5: 查询间隔
            :appear: 图片出现或消失:Ture-出现;False-消失
            :thread: 检测阈值
            :return: 成功返回True, 失败退出游戏
        '''
        # 在指定时间内反复监测画面并点击
        start_time = time.time()
        while time.time()-start_time <= self.max_op_time and self.run:
            result = self.yys.find_game_img_knn(img_path, thread=thread)
            if not appear:
                result = not result
            if result:
                self.log.writeinfo(self.name + '点击 ' + tag + ' 成功')
                return True
            else:
                # 点击指定位置并等待下一轮
                self.yys.mouse_click_bg(pos, pos_end)
                self.log.writeinfo(self.name + '点击 ' + tag)
            ut.mysleep(step_time*1000)
        self.log.writewarning(self.name + '点击 ' + tag + ' 失败!')

        # 提醒玩家点击失败,并在5s后退出
        self.yys.activate_window()
        time.sleep(5)
        self.yys.quit_game()
示例#5
0
    def __init__(self, name='', emyc=0):
        # 初始参数
        self.emyc = emyc
        self.name = name

        # 启动日志
        self.log = WriteLog()

        # 绑定窗口
        self.yys = GameControl(u'阴阳师-网易游戏')
        self.log.writeinfo(self.name + 'Registration successful')

        # 激活窗口
        self.yys.activate_window()
        self.log.writeinfo(self.name + 'Activation successful')
        ut.mysleep(500)
示例#6
0
 def check_end(self):
     '''
     检测是否打完
         :return: 胜利页面返回0;奖励页面返回1
     '''
     self.log.writeinfo(self.name + '检测是战斗是否结束')
     start_time = time.time()
     while time.time() - start_time <= self.max_win_time and self.run:
         maxVal, maxLoc = self.yys.find_multi_img('img/SHENG-LI.png',
                                                  'img/TIAO-DAN.png',
                                                  'img/JIN-BI.png')
         end_cof = max(maxVal)
         if end_cof > 0.9:
             myend = maxVal.index(end_cof)
             break
         ut.mysleep(800)
     if myend in [0]:
         logging.info(self.name + '战斗成功')
         return 0
     elif myend in [1, 2]:
         logging.info(self.name + '本轮战斗结束')
         return 1
示例#7
0
    def check_exp_full(self):
        '''
        检查狗粮经验,并自动换狗粮
        狗粮序列,1-左; 2-中; 3-右; 4-左后; 5-右后
        '''
        if self.gouliang == None:
            return

        # 狗粮经验判断
        gouliang = []
        if 1 in self.gouliang:
            gouliang.append(
                self.yys.find_game_img('img\\MAN2.png', 1,
                                       *TansuoPos.gouliang_left, 1, 0.8))
        if 2 in self.gouliang:
            gouliang.append(
                self.yys.find_game_img('img\\MAN2.png', 1,
                                       *TansuoPos.gouliang_middle, 1, 0.8))
        if 3 in self.gouliang:
            gouliang.append(
                self.yys.find_game_img('img\\MAN2.png', 1,
                                       *TansuoPos.gouliang_right, 1, 0.8))
        if 4 in self.gouliang:
            gouliang.append(
                self.yys.find_game_img('img\\MAN2.png', 1,
                                       *TansuoPos.gouliang_leftback, 1, 0.8))
        if 5 in self.gouliang:
            gouliang.append(
                self.yys.find_game_img('img\\MAN2.png', 1,
                                       *TansuoPos.gouliang_rightback, 1, 0.8))

        # 如果都没满则退出
        res = False
        for item in gouliang:
            res = res or bool(item)
        if not res:
            return

        # 开始换狗粮
        while self.run:
            # 点击狗粮位置
            self.yys.mouse_click_bg(*TansuoPos.change_monster)
            if self.yys.wait_game_img('img\\QUAN-BU.png', 3, False):
                break
        time.sleep(1)

        # 点击“全部”选项
        self.yys.mouse_click_bg(*TansuoPos.quanbu_btn)
        time.sleep(1)

        # 点击卡片
        if self.change_shikigami == 1:
            self.yys.mouse_click_bg(*TansuoPos.n_tab_btn)
        elif self.change_shikigami == 0:
            self.yys.mouse_click_bg(*TansuoPos.s_tab_btn)
        elif self.change_shikigami == 2:
            self.yys.mouse_click_bg(*TansuoPos.r_tab_btn)
        time.sleep(1)

        # 拖放进度条
        if self.slide_shikigami:
            # 读取坐标范围
            star_x = TansuoPos.n_slide[0][0]
            end_x = TansuoPos.n_slide[1][0]
            length = end_x - star_x

            # 计算拖放范围
            pos_end_x = int(star_x +
                            length / 100 * self.slide_shikigami_progress)
            pos_end_y = TansuoPos.n_slide[0][1]

            self.yys.mouse_drag_bg(TansuoPos.n_slide[0],
                                   (pos_end_x, pos_end_y))
            time.sleep(1)

        # 更换狗粮
        for i in range(0, len(self.gouliang)):
            if gouliang[i]:
                if self.gouliang[i] == 1:
                    self.yys.mouse_drag_bg((422, 520), (955, 315))
                elif self.gouliang[i] == 2:
                    self.yys.mouse_drag_bg((309, 520), (554, 315))
                elif self.gouliang[i] == 3:
                    self.yys.mouse_drag_bg((191, 520), (167, 315))
                elif self.gouliang[i] == 4:
                    self.yys.mouse_drag_bg((309, 520), (829, 315))
                elif self.gouliang[i] == 5:
                    self.yys.mouse_drag_bg((191, 520), (301, 315))
                ut.mysleep(1000)