Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2018 20:06:23

Nikitozz
Зарегистрирован: 2018-11-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизировать бота для браузерной игры

Привет. Решил попробовать написать бота для игры-ловилки (https://www.divan.ru/vladimir/category/stok-mebeli/page-6). В принципе он работает, только эффективность его не лучше, чем управлять вручную. Подскажите как можно улучшить его реакцию?
И еще, как можно определить, что браузер закрыт? Программа продолжает управлять курсором и вне игры.

 from PIL import ImageGrab
import numpy as np
#import os
import time
from selenium import webdriver
import win32api, win32con
box=(0,799,1920,800) #устанавливает область для наблюдения по ширине экрана высотой 1 пиксель
driver = webdriver.Chrome()
def screen():
    im=ImageGrab.grab(box)
    #im.save(os.getcwd() + '\\Catch_snap_' + str(int(time.time())) + '.png','PNG')
def openWindow(): # открывает браузер и запускает игру
    driver.get("https://www.divan.ru/vladimir/category/stok-mebeli/page-6")
    driver.maximize_window()
    mousePos((1920//2,1080//2+50)) #запускает игру 
    leftClick()                    #(расчитано на разрешение 1920x1080)
    
def mousePos(cord):
    win32api.SetCursorPos(cord)
def leftClick():
      win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
      time.sleep(.1)
      win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
      #print "Click."          #completely optional. But nice for debugging purposes.    
def main():
    openWindow() #запуск игры
    while 1:       
        im=ImageGrab.grab(box) #считывает область экрана высотой 1 пиксель
        arr = np.array(im);    #преобразует в массив
        t= next((i for i, a in enumerate(arr[0][51::50]) if sum(a)<765), None)  
        #ищет первый пиксель в массиве не белого цвета с шагом 50 пикселей (половина ширины подушки)
        #и получает номер шага на котором был найден пиксель
        if t: # если найден такой пиксель
          #screen()
          win32api.SetCursorPos((t*50,800)) #преобразует шаг в координату пикселя и перемещает туда курсор   
        
if __name__ == '__main__':
    main()

Отредактировано Nikitozz (Ноя. 27, 2018 20:08:08)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version