Текст

Текст


1) Пишем бот для пазл игры на Python

2)Давно хотел попробовать свои силы в компьютерном зрении и вот этот момент настал. Интереснее обучаться на играх, поэтому тренироваться будем на боте. В статье я попытаюсь подробно расписать процесс автоматизации игры при помощи связки Python + OpenCV.

3)https://habrastorage.org/webt/_c/wh/hu/_cwhhuxeiezf-tg291le37acb7g.png

4)Ищем цель

5)Идем на тематический сайт miniclip.com и ищем цель. Выбор пал на цветовую головоломку Coloruid 2 раздела Puzzles, в которой нам необходимо заполнить круглое игровое поле одним цветом за заданное количество ходов. Выбранным внизу экрана цветом заливается произвольная область, при этом соседние области одного цвета сливаются в единую.

6)https://habrastorage.org/webt/zj/wn/j9/zjwnj9ltmc-fgny_iblnhtqf1xm.png

7)Подготовка

8)Использовать будем Python. Бот создан исключительно в образовательных целях. Статья рассчитана на новичков в компьютером зрении, каким я сам и являюсь9)Для работы бота нам понадобятся следующие модули:

10) opencv-python

11)Pillow

12)selenium

13)Бот написан и протестирован для версии Python 3.8 на Ubuntu 20.04.1. Устанавливаем необходимые модули в ваше виртуальное окружение или через pip install. Дополнительно для работы Selenium нам понадобится geckodriver для FireFox, скачать можно тут github.com/mozilla/geckodriver/releases

14)https://github.com/mozilla/geckodriver/releases

15)Управление браузером

16)Мы имеем дело с онлайн-игрой, поэтому для начала организуем взаимодействие с браузером. Для этой цели будем использовать Selenium, который предоставит нам API для управления FireFox. Изучаем код страницы игры. Пазл представляет из себя canvas, которая в свою очередь располагается в iframe. Ожидаем загрузки фрейма с id = iframe-game и переключаем контекст драйвера на него. Затем ждем canvas. Она единственная во фрейме и доступна по XPath /html/body/canvas.




Report Page