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

Игровой demo-сервер доступен так же в интернете 24/7 в целях ознакомления http://codenjoy.com/codenjoy-contest

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

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

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

У каждого игрока есть свое поле с фишками. Все фишки разноцветные. Игрок может обменять любые две соседние фишки местами. Для этого ему надо послать команду ACT(X, Y),DIRECTION, где X, Y - координаты клетки, а DIRECTION - направление к соседней фишке (LEFT, RIGHT, UP, DOWN) с которой произойдет обмен.

Если за ход образуются области, заполненные одним цветом с фишками, которые перемещались - игроку начислятся бонусные очки, а фишки снимаются с поля (при этом верхние фишки под силой тяжести падают вниз, а на новом место образуются новые фишки рендомным образом)

Очки начиляются следующим образом - в завииости от количества исчезнувших фишек:
2 фишки = 1+2 очков
3 фишки = 1+2+3 очков
4 фишки = 1+2+3+4 очков
и так далее.

Очки суммируются. Побеждает игрок с большим числом очков (до условленного времени).

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

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

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

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

ws://codenjoy.com:80/codenjoy-contest/ws?user=3edq63tw0bq4w4iem7nb&code=12345678901234567890

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

ws://server_ip:8080/codenjoy-contest/ws?user=3edq63tw0bq4w4iem7nb&code=12345678901234567890

Тут 'user' - id игрока, a 'code' - твой security token, его ты можешь получить из адресной строки браузера после регистрации/логина

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

^board=(.*)$

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

board=☼☼☼☼☼☼☼☼☼☼2482852☼☼1367346☼☼6485683☼☼2127416☼☼4363253☼☼1854818☼☼7637564☼☼☼☼☼☼☼☼☼☼

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

☼☼☼☼☼☼☼☼☼
☼2482852☼
☼1367346☼
☼6485683☼
☼2127416☼
☼4363253☼
☼1854818☼
☼7637564☼
☼☼☼☼☼☼☼☼☼

Первый символ строки соответствует ячейке расположенной в левом верхнем углу и имеет координату [0,0]. Координаты квадратиков берутся c учетом границ.

 012345678
0☼☼☼☼☼☼☼☼☼
1☼       ☼
2☼       ☼
3☼       ☼
4☼       ☼
5☼       ☼
6☼       ☼
7☼       ☼
8☼☼☼☼☼☼☼☼☼

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

Пустое место – место которое заполнится фишкой в следующий тик

NONE(' ')

Граница поля, в игре не участвует (не перемещается)

BORDER('☼')

Перемещаемые фишки

ONE...NINE('1...9')

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

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