Giter Site home page Giter Site logo

jigsawmp's Introduction

Jigsaw Multiplayer with DB

Автор

Романцов Николай Сергеевич

Об игре

Игра представляет собой многопользовательскую реализацию игры Jigsaw. Пользователи могут играть как поодиночке, так и в парах, выигрывая или проигрывая. Дополнительно реализован список из 10 лучший игр, который хранится на Derby-сервере.

Игровой процесс

Игрок размещает предложенные ему фигуры на поле, если это возможно. Результатом игры является количество сделанных ходов. Кроме того, вы можете оценить свой прогресс не только по количеству ходов, но и по времени игры. Чтобы сообщить о том, что вы закончили, следует нажать на кнопку завершения игры.

Определение победителя

При определении победителя оценивается в первую очередь количество сделанных ходов. При их равенстве оценивается время игры(кто первый нажал кнопку "Завершить"). При равенстве этих параметров объявляется ничья.

Запуск из Intellij idea

Сервер

Перед запуском игрового сервера требуется запустить 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 для победы/поражения/ничьей

Последовательность работы

  1. Запуск окна сервера. Выполнение настроек.
  2. Сервер запускается на определенном порту. С этого момента клиенты могут подключиться к игре
  3. Запуск окна регистрации клиента.
  4. Клиент вводит свое имя, адрес и порт сервера и, если это возможно, подключается к игре
  5. При подключении закрывается окно регистрации и открывается окно самой игры
  6. Ожидание второго игрока(п.3-п.5) или начало игры
  7. Отключение игроков закрытием игрового окна или по причине остановки сервера

Ограничения

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

Принцип формирования рейтинга

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

jigsawmp's People

Contributors

winstondovlatov avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.