Игровой demo-сервер доступен так же в интернете 24/7 в целях ознакомления http://codenjoy.com/codenjoy-contest
Игра с открытым исходным кодом. Для реализации своей игры, исправления ошибок в текущей и внесения других правок необходимо для начала форкнуть проект. В корне репозитория есть описание в файле Readme.md - там описано, что делать дальше.
По возникающим вопросам, пиши в skype:alexander.baglay или на почту apofig@gmail.com
В чем суть игры?
Тебе предстоит захватить как можно большую территорию поля. Играть ты будещь вместе с другими противниками. Как играть?
Каждый твой ход ты можешь выбрать любую свою фишку и сделать ею один из двух типов ходов - либо походить на соседнюю клеточку, либо через одну. Если ты походишь на соседнюю - то фишка клонируется. Если через одну - фишка переместится. Когда твоя фишка приближается к фишкам соперника в притык - они превращаются в твои. Этого не случится, если это фишка соперника, которая походила за тот же ход что и ты (все игроки ходят все одновременно). Если же вы с соперником походили в одно и то же место поля - там образуется стена. Если ты не походил - ты пропускаешь ход.
Ходить ты можешь в любом из четырех направлений, на одну или две позиции, для этого тем тебе потребуется указать какой фишкой и как ходить, а потом и куда. Пример - ACT(2,3),LEFT - походить фишкой в позиции 2,3 (координаты 0,0 в левом верхнем углу) влево, клонировав ее. Пример2 - ACT(1,1,1),UP - походить фишкой в позиции 1,1 вверх, переместив ее.
Очки расчитываются так: каждая захваченная фишка +30, каждая утерянная фишка -10.
Побеждает игрок с большим числом очков (до условленного времени).
Итак, игрок регистрируется на сервере, указывая свой 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 можно выкусить строку доски. Вот пример строки от сервера (размер поля 7х7):
board=☼☼☼☼☼☼☼☼ ☺☺ ☼☼ ☺ ☼☼ ☼☼ ☻ ☼☼ ☼☼☼☼☼☼☼☼
Длинна строки равна площади поля (N*N). Если вставить символ переноса строки каждые N символов, то получится читабельное изображение поля.
☼☼☼☼☼☼☼ ☼ ☺☺ ☼ ☼ ☺ ☼ ☼ ☼ ☼ ☻ ☼ ☼ ☼ ☼☼☼☼☼☼☼
Первый символ строки соответствует ячейке расположенной в левом верхнем углу и имеет координату [0, 0]. В этом примере — позиция героя (символ ☻) — [3, 4].
Расшифровка символов
'☼' - препятствие, через которое никто не пройдет MY_HERO('☺') - так всегда видно меня на моем поле HERO1('☻') - фишки игроков (где-то из них мой цвет - им я отображаюсь на чужом поле) HERO2('♥') HERO3('♦') HERO4('♣') HERO5('♠') HERO6('•') HERO7('◘') HERO8('○') HERO9('◙') HERO10('♂') HERO11('♀') NONE(' ') - свободная территория
Игра пошаговая, каждую секунду сервер посылает твоему клиенту (боту) состояние обновленного поля на текущий момент и ожидает ответа команды. За следующую секунду игрок должен успеть дать команду. Если не успел — ничего не менятеся.
Первая задача – написать websocket клиента, который подключится к серверу. Затем заставить цифры на поле слушаться команд. Таким образом, игрок подготовится к основной игре. Основная задача – вести осмысленную игру и победить.