Техническое задание на разработку конкурсного приложения “Многопользовательская сетевая игра Змейка”.

Задача 1: Разработать систему “Многопользовательская сетевая игра Змейка”

Система должна состоять из двух частей - клиентской и серверной (сервер может быть выделенным или же один из клиентов может выступать в роли сервера).

Суть игры:

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

Правила игры:

Игра начинается после того, как к серверу подключилось необходимое количество игроков (количество игроков задается в настройках сервера). Максимальное количество игроков в одном игровом мире - 4. В начале игры змейки всех игроков находятся в разных углах игрового поля на одинаковом расстоянии от центра. Длина змеек всех игроков одинакова и равна 3 элементам Первое яблоко всегда появляется по центру экрана, что предоставляет одинаковые шансы для всех игроков набрать первое очко Тот игрок, который раньше добрался до яблока получает 1 очко и длина его змейки увеличивается на один элемент После взятия игроком текущего яблока, следующее яблоко появляется в случайном месте игрового поля, но только если это поле не занято змейкой одного из игроков. Змейкам запрещается сталкиваться с границами игрового поля. В случае, если змейка врезается в границу игрового поля - количество очков игрока обнуляется, и длина змейки становится равной 3 элементам. После столкновения, змейка появляется в одном из случайных мест игрового поля, при условии, что в этом месте нет змейки другого игрока. При столкновении двух или более змеек между собой действуют следующие правила: Если змейка игрока A своим головным элементом врезалась в неголовной элемент змейки игрока B - игрок А теряет все очки, длина его змейки становится равной 3 элементам, змейка появляется в одном из случайных мест игрового поля. Если змейка игрока А своим головным элементом врезалась в головной элемент змейки игрока B - оба игрока теряют очки, длина их змеек становится равной 3 элементам, змейки появляются в одном из случайных мест игрового поля.
Существуют два варианта завершения игры: Закончилось игровое время, указанное в конфигурации на сервере. В данном случае побеждает игрок, набравший максимальное количество баллов. Все игроки кроме одного покинули игровое поле. В данном случае выигрывает игрок, оставшийся на игровом поле.

Клиентская часть - Графический интерфейс для игры.

НЕ нашли? Не то? Что вы ищете?

Клиентская часть должна позволять пользователю:

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

Серверная часть - предоставляет доступ для игры различному количеству клиентов.

Серверная часть позволяет конфигурировать следующие параметры игры:

Размер игрового поля Количество игроков на одном поле Время игры (время после начала игры, по истечении которого игра заканчивается) Скорость движения змеек

Серверные функции может выполнять один из клиентов. Клиент может создавать сервер, на котором сможет играть он сам и другие игроки.

Участник в конце срока проведения конкурса должен предоставить:

Исходный код Видео с демонстрационным роликом работы приложения Файлы, необходимые для сборки и запуска приложения из исходного кода (build-скрипт) и инструкция по сборке продукта

Решения задач присылайте на почту

Pavel Medvedev pavel. *****@***com

Applied mathematics <*****@***obninsk. ru>

 

Задача 2 (выполняется только в случае успешного завершения первой задачи):

Реализовать автоматический клиент для игры в “Сетевую змейку”.

Автоматический клиент должен уметь подключаться к игре на сервере как обычный клиент и управлять движением змейки.

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

Участник в конце срока проведения конкурса должен предоставить:


Исходный код Видео с демонстрационным роликом работы приложения Файлы, необходимые для сборки и запуска приложения из исходного кода (build-скрипт) и инструкция по сборке продукта

Решения задач присылайте на почту

Pavel Medvedev pavel. *****@***com

Applied mathematics <*****@***obninsk. ru>

Критерии оценки результатов

Результат конкурса оценивается в двух номинациях:

За лучшую реализацию многопользовательской сетевой игры “Змейка” За лучшую реализацию автоматического клиента для игры в змейку

Критерии оценки многопользовательской сетевой игры “Змейка”:

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

В случае, если несколько участников конкурса выполнили это условие, в силу вступают следующие критерии оценки:

Техническая составляющая (архитектура, качество кода) Графическая составляющая (Сложность элементов игрового поля, змейки, яблока) Время отклика (время между моментом нажатия пользователем A кнопки изменения направления движением своей змейки и моментом отображения этого изменения на игровом поле игрока B)

Критерии оценки автоматического клиента для игры в змейку:

В данной номинации выигрывает участник, змейка которого наиболее быстро добирается до яблока, и уходит от столкновения со змейками других игроков.