Rubics Cube codenjoy — как играть?

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

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

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

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

Тебе предстоит собрать кубик рубика. Правил в сети есть великое множество - бери какой хочешь и реализуй его.

За собранный кубик игрок получит бонусные очки. Очки суммируются.

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

Итак, игрок регистрируется на сервере, указывая свой 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=   BYY         GWY         RRO      YWBWGYGBOBRRGBYOOBRGGORYWWRGWOWRYGOB   WOG         BYW         OBR                                          

Длинна строки равна площади поля (12*12). Если вставить символ переноса строки каждые 12 символов, то получится читабельное изображение поля. Левый верхний угол соответствует координате [0, 0].

   BYY
   GWY
   RRO
YWBWGYGBOBRR
GBYOOBRGGORY
WWRGWOWRYGOB
   WOG
   BYW
   OBR      

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

Пустое место

NONE(' ')

Цвета граней

RED('R')
GREEN('G')
YELLOW('Y')
WHITE('W')
ORANGE('O')
BLUE('B')

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

Игрок может посылать команду серверу в формате ACT(N, M), где N - номер грани, а M - количество вращений по часовой стрелке (-1, 1, 2).

Грани нумируются так:
1 - левая (left)
2 - фронтальная (front)
3 - правая (right)
4 - задняя (back)
5 - верхняя (up)
6 - нижняя (down)

Вот их расположение на рисунке (D - down, L - left, F - front, R - right, U - up, B - back)

   UUU
   UUU
   UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
   DDD
   DDD
   DDD      

Можно запросить новый кубик, для этого потребуется выполнить команду ACT(0). В этом случае будут начислены штрафные очки.

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