Романцов Николай Сергеевич
Игра представляет собой многопользовательскую реализацию игры Jigsaw. Пользователи могут играть как поодиночке, так и в парах, выигрывая или проигрывая. Дополнительно реализован список из 10 лучший игр, который хранится на Derby-сервере.
Игрок размещает предложенные ему фигуры на поле, если это возможно. Результатом игры является количество сделанных ходов. Кроме того, вы можете оценить свой прогресс не только по количеству ходов, но и по времени игры. Чтобы сообщить о том, что вы закончили, следует нажать на кнопку завершения игры.
При определении победителя оценивается в первую очередь количество сделанных ходов. При их равенстве оценивается время игры(кто первый нажал кнопку "Завершить"). При равенстве этих параметров объявляется ничья.
Перед запуском игрового сервера требуется запустить Derby-сервер. Для этого выполните startNetworkServer.
Точкой входа сервера является метод main в классе ServerApplication.
Точкой входа клиента является метод main в классе ClientApplication.
Для тестирования многопользовательского режима требуется установить в настройках запуска Allow multiply instances.
- client - package реализующий клиентскую часть программы
- Client - класс-синглетон, реализующий высокоуровневую логику взаимодействия с сервером
- ClientApplication - окно с регистрацией пользователя
- ClientController - класс, управляющий формой регистрации пользователя
- ClientEntry - точка входа для клиентской части. Открывает окно с регистрацией
- GameController - класс, управляющий пользовательским интерфейсом игры на машине пользователя
- RatingController - класс для управления пользовательским интерфейсом окна со списком лучший игр
- ServerHandler - класс, реализующий непосредственное общение с сервером
- Timer - класс для подсчета оставшегося времени на игру
- model - package, реализующий логику самой игры
- server - package, реализующий клиентскую часть программы
- ClientHandler - класс, реализующий непосредственную обработку сообщений от клиента
- Controller - класс, управляющий окном управления сервера
- Server - класс ответственный за высокоуровневую логику сервера
- ServerApplication - окно управления сервером
- ServerEntry - точка входа серверной части. Открывает окно управления сервером
- ServerRegistrar - класс, что регистрирует игроков, прибывших на сервер
- GameResult - класс для передачи и хранения результатов о завершенной игре
- Message - класс представляющий собой сообщение, которым обмениваются клиент и сервер
- MessageType - enum для типов сообщений
- PlayerStatus - enum для статуса клиента (в игре/ожидает/готов)
- ResultType - enum для победы/поражения/ничьей
- Запуск окна сервера. Выполнение настроек.
- Сервер запускается на определенном порту. С этого момента клиенты могут подключиться к игре
- Запуск окна регистрации клиента.
- Клиент вводит свое имя, адрес и порт сервера и, если это возможно, подключается к игре
- При подключении закрывается окно регистрации и открывается окно самой игры
- Ожидание второго игрока(п.3-п.5) или начало игры
- Отключение игроков закрытием игрового окна или по причине остановки сервера
Сервер может одновременно работать с двумя игроками, если включен многопользовательский режим, и с одним игроком, если включен одиночный режим.
Результаты всех сыгранных матчей сортируются в первую очередь по количеству сделанных ходов, затем по продолжительности матча, а при прочих равных - по дате конца игры.