def fight(): adb = AutoAdb() # 战斗前各种按钮的点击 while True: if PageUtils.in_fight_page(): break click = adb.click('temp_images/fight/fight.png') if click: continue retired = PortUtils.check_port_full() if retired: # 如果发生了退役操作,则再次点击确认按钮 AutoAdb().wait('temp_images/fight/fight.png').click() continue low_mood = adb.check('temp_images/fight/low-mood.png') if low_mood: print('低心情状态,脚本终止') exit() print('战斗开始 >>>') adb.wait('temp_images/fight/fight-finish.png', cycle_interval=5) # 战斗结束 fight_result = None ending_loc = Location(adb, None, 1160, 690) while True: if fight_result is None: # 处理新船 new_ship = adb.check('temp_images/fight/new-ship.png') if new_ship: print('发现新船!!') fight_result = True ending_loc.click() adb.click('temp_images/confirm-btn.png') continue # 处理失败 fail_confirm = adb.click('temp_images/fight/fail-confirm.png') if fail_confirm: fight_result = False # 战队难以成型时点击确定 adb.wait('temp_images/confirm-btn.png', max_wait_time=3).click() break # 持续点击右下角 ending_loc.click() # 回到 stage列表页面 或 敌人列表页面 也说明战斗已经结束 if adb.check( 'temp_images/page/in-stage.png', # stage列表 'temp_images/page/in-enemy.png', # enemy列表 'temp_images/page/main-page-button.png'): # 日常任务结束后的界面 fight_result = True break print('战斗胜利~(~ ̄▽ ̄)~' if fight_result else '战斗失败 >_<') # 战斗结束后可能出现紧急任务提示 # 由于是透明遮罩, 所以无法根据其他元素是否显示而做出反应, 只能等一定的时间 adb.wait('temp_images/confirm-btn.png', max_wait_time=2).click() return fight_result
def run(): adb = AutoAdb() blank_loc = Location(adb, None, 600, 30) PageUtils.to_main_page() # 点击生活区 Location(adb, None, 580, 680).click() # 点击指挥喵 Location(adb, None, 980, 460).click() # 判断有无免费订购。 have_free = adb.click("temp_images/daily-task/meow/free-meow.png", threshold=0.95) if have_free: # 第二次判断 have_free = adb.check("temp_images/daily-task/meow/free-meow-1.png", threshold=0.95) if have_free: print('领取每日免费喵箱...') # 结算 adb.wait('temp_images/daily-task/meow/buy.png').click() # 点击确定 adb.wait('temp_images/daily-task/meow/confirm.png').click() # 二次确定 adb.wait("temp_images/click-to-continue.png").click() # 关闭领取对话框 blank_loc.click() # 点击训练 Location(adb, None, 1200, 680).click() # 等待对话框打开 adb.wait('temp_images/daily-task/meow/in-lesson-page.png') while adb.click('temp_images/daily-task/meow/lesson-finish.png', wait_time=2): print('领取训练完成的喵...') meow_full = adb.check('temp_images/daily-task/meow/meow-full.png') if meow_full: print('喵窝已满!!!请先处理!!!') return while True: if adb.click('temp_images/daily-task/meow/confirm.png'): continue if adb.click('temp_images/daily-task/meow/new-meow-btn.png'): continue if adb.check('temp_images/daily-task/meow/in-lesson-page.png'): break print('训练新的喵...') # 点击“开始训练” adb.wait('temp_images/daily-task/meow/start-lesson.png').click() # 点击“一键选择” adb.wait("temp_images/daily-task/meow/pick-all.png").click() # 点击“开始训练” adb.wait('temp_images/daily-task/meow/start-lesson.png').click() # 点击确认 adb.wait("temp_images/daily-task/meow/confirm.png", max_wait_time=3).click() # 回到主页 PageUtils.to_main_page() print('指挥喵处理完毕')
def fight_finish(): adb = AutoAdb() # 等待战斗结束 timer = Timer() while True: print('\r等待战斗结束 %ds ...' % timer.get_duration(), end='') skip_dialog() time.sleep(3) # 每次循环加一个等待时间,降低cpu占用 if adb.check('temp_images/fight/fight-finish.png'): print(' √ 总耗时: %ds' % timer.get_duration()) break # 战斗结束 fight_result = None ending_loc = Location(adb, None, 1160, 690) while True: if fight_result is None: # 处理新船 new_ship = adb.check('temp_images/fight/new-ship.png') if new_ship: print('发现新船!!') fight_result = True ending_loc.click() adb.click('temp_images/confirm-btn.png') continue # 处理失败 fail_confirm = adb.click('temp_images/fight/fail-confirm.png') if fail_confirm: fight_result = False # 战队难以成型时点击确定 adb.wait('temp_images/confirm-btn.png', max_wait_time=3).click() break # 持续点击右下角 ending_loc.click() # 回到 stage列表页面 或 敌人列表页面 也说明战斗已经结束 if adb.check('temp_images/page/in-stage.png', # stage列表 'temp_images/page/in-enemy.png', # enemy列表 'temp_images/page/in-daily.png'): # 日常任务结束后的界面 fight_result = True break if adb.check('temp_images/page/in-operation.png'): print('误入演习界面,退出。。。') PageUtils.back() continue print('战斗胜利~(~ ̄▽ ̄)~' if fight_result else '战斗失败 >_<') # 战斗结束后可能出现紧急任务提示 # 由于是透明遮罩, 所以无法根据其他元素是否显示而做出反应, 只能等一定的时间 adb.wait('temp_images/confirm-btn.png', max_wait_time=2).click() return fight_result
def fight_in_stage(): auto_adb = AutoAdb() while True: # 寻找敌人 res = provoke_enemy() if not res: break print('战斗开始 >>>') auto_adb.wait('temp_images/fight/fight-finish.png', cycle_interval=5) print(' 战斗结束 !') ending_loc = Location(auto_adb, None, 1040, 660) while True: in_stage = auto_adb.check('temp_images/stage/in-stage.png') in_unit = auto_adb.check('temp_images/stage/in-unit.png') if in_stage or in_unit: break new_ship = auto_adb.check('temp_images/fight/new-ship.png') if new_ship: print('发现新船!!') ending_loc.click() auto_adb.click('temp_images/fight/new-ship-confirm.png') continue fail_confirm = auto_adb.click('temp_images/fight/fail-confirm.png') if fail_confirm: input('战斗失败!! 请整理后按下任何按键以继续 ...') continue ending_loc.click() # 可能出现紧急任务提示 # 由于是透明遮罩, 所以无法根据其他元素是否显示而做出反应, 只能等一定的时间 auto_adb.wait('temp_images/fight/urgent-task.png', max_wait_time=3).click()