Игровой 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 клиента, который подключится к серверу (либо скачать клиента тут). Затем заставить поле слушаться команды. Таким образом, игрок подготовится к основной игре. Основная задача – вести осмысленную игру и победить.