Snake codenjoy — как играть?

В принципе, игровой сервер доступен сейчас в целях ознакомления http://codenjoy.com/codenjoy-contest

В чем суть игры?

Надо написать своего бота для змейки, который обыграет других ботов по очкам. Каждый игрок играет на своем поле. Змейка может передвигаться по свободным ячейкам во все четыре стороны.

На своем пути змейка может повстречать яблочко, какушку, Свой хвост и стену. В случае схедания яблочка замейка удлиннится на 1. Если же испробует какушку - укоротится на 10 попугаев. Если ее длинна меньше 10 - погибнет. Если попробует на вкус себя или стену - так же погибнет.

За съеденные яблочки боту игрока начисляются очки. За смерть питомца - штрафные. Очки суммируются. Побеждает игрок с большим числом очков (до условленного времени). Мертвая змейка тут же пропадает и на поле появляется новая.

Итак, игрок регистрируется на сервере, указывая свой email

Далее необходимо подключиться из кода к серверу через вебсокеты. Это Maven проект и подойдет он дял игры на JVM языках. Как его запустить смотри в корне README.txt

Для других языков придется написать свой клиент (а после пошарить с нами на почту: apofig@gmail.com)

Адрес для подключения к игре на сервере http://codenjoy.com:

ws://tetrisj.jvmhost.net:12270/codenjoy-contest/ws?user=email

Адрес для подключения к игре на сервере, развернутом в локальной сети:

ws://server_ip:8080/codenjoy-contest/ws?user=email

Тут email - имейл, указанынй при регистрации на сервере.

После подключения клиент будет регулярно (каждую секунду) получать строку символов — с закодированным состоянием поля. Формат таков

^board=(.*)$

с помощью этого regexp можно выкусить строку доски. Вот пример строки от сервера:

board=☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼             ☼☼      ☻      ☼☼            ☺☼☼            ▲☼☼            ║☼☼            ║☼☼            ║☼☼            ╙☼☼             ☼☼             ☼☼             ☼☼             ☼☼             ☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼

Длинна строки равна площади поля. Если вставить символ переноса строки каждые sqrt(length(string)) символов, то получится читабельное изображение поля.

☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼
☼             ☼
☼      ☻      ☼
☼            ☺☼
☼            ▲☼
☼            ║☼
☼            ║☼
☼            ║☼
☼            ╙☼
☼             ☼
☼             ☼
☼             ☼
☼             ☼
☼             ☼
☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼

Первый символ строки соответствует ячейке расположенной в левом верхнем углу и имеет координату [0, 0]. В этом примере — позиция головы змейки (символ ▲) — [13, 4].

Расшифровка символов

Пустое место – по которому может двигаться змейка

NONE(' ')

Cтена

WALL('☼')

Яблоко

APPLE('☺')

Изображения тела змейки

TAIL("╙╘╓╕═║╗╝╔╚")

Голова змейки в зависимости от направления движения

HEAD("◄►▲▼")

Какушка

STONE('☻')

Игра пошаговая, каждую секунду сервер посылает твоему клиенту (боту) состояние обновленного поля на текущий момент и ожидает ответа команды змейке. За следующую секунду игрок должен успеть дать команду змейке. Если не успел — змейка движется по инерции (пока не найдет стенку).

Команд несколько: UP, DOWN, LEFT, RIGHT – приводят к повороту головы змейки в заданном направлении. Напомню, что змея движется по инерции.

Первая задача – написать websocket клиента, который подключится к серверу. Затем заставить змейку слушаться команды. Таким образом, игрок подготовится к основной игре. Основная задача – вести осмысленную игру и победить.

Игра с открытым исходным кодом. Для реализации своей игры, исправления ошибок в текущей и внесения других правок необходимо для начала форкнуть проект. В корне репозитория есть описание в файле Readme.md - там описано, что делать дальше.

По возникающим вопросам, пиши в skype:alexander.baglay или на почту apofig@gmail.com