Skip to content

rubfan/strategy-card-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Strategy Card Game Project

Ссылка на Схему базы данных

Ссылка на статические данные для наполнения таблиц в нашей базе данных

Ссылка на Project Management app

Ссылка на Project CI(Continues Integration)

Ссылка на Project Cloud

FE Технологии:


FE Файлы и папки скелета приложения:


Обмен данными между BE <-> FE: REST HTTP verbs mapped to CRUD

BE Технологии:


Using Design Patterns

BE Application Design:

Application Design

BE Файлы и папки скелета приложения:


  • /src/main/java/ua/od/game/controller - контроллеры содержщие эндпоинт методы которые вызываются в зависимости от того какой пришел HTTP запрос на Jetty сервер

  • /src/main/java/ua/od/game/dto - классы обертки данных, служат для обмена данными между слоем контроллеров и сервисов

  • /src/main/java/ua/od/game/service - классы содержащие бизнес логику приложения

  • /src/main/java/ua/od/game/model - классы обертки данных, служат для обмена данными между слоем сервисов и слоем DAO классов

  • /src/main/java/ua/od/game/repository/dao - DAO классы в которых находятся методы содержащие SQL CRUD операции для взаимодействия с сущностями реляционных баз данных и превращения их в Entity Java обьекты, или другими словами классы которые занимаются ORM задачами

  • /src/main/java/ua/od/game/config/AppContextConfig.java - настройки контекста приложения(!!!тут вручную надо регистрировать новые классы проекта!!!)

  • /src/main/java/ua/od/game/config/DataBaseConfig.java - загрузка db.properties файла с конфигурациями базы данных при старте проекта для доступа из Java

  • /src/main/java/ua/od/game/ApplicationStarter.java - загрузка всех конфигураций и запуск Jetty сервера

  • /src/main/java/ua/od/game/DataBaseDeployer.java - развертывание базы данных согласно SQL скриптам собранным в папке /src/main/resources/db/*.sql

  • /src/main/java/ua/od/game/repository/helper/SqlHelper.java - обычный класс помощник который упрощает работу с JDBC

  • /src/main/resources/config/db.properties - тут находятся все конфигурации которые позволяют работать с базой данных

  • /src/main/resources/db/*.sql - тут находятся все SQL скрипты которые позволяют развернуть базу данных и заполнить ее начальными статичными данными

  • /src/test/java/ua/od/game/repository/dao/DbTest.java - super класс всех тестов связанных с базой данных - автоматически разворачивает h2 базу используя настройки из файла /src/test/resources/config/db.properties и файлы SQL скриптов из папки /src/test/resources/db/*.sql

  • /src/test/resources/config/db.properties - тут находятся все конфигурации которые позволяют работать с базой данных на этапе тестирования

  • /src/test/resources/db/*.sql - тут находятся все SQL скрипты которые позволяют развернуть базу данных и заполнить ее данными для тестов

Краткая справка по таблицам

============================ Alt text

User - таблица в которой сохранены все зарегистрированые в игре пользователи

Room - таблица в которой хранятся все комнаты.

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

Message - таблица в которой хранятся все сообщения которые создаются игроками в чате

Building - таблица в которой хранится статическая информация о здании - название и описание (билдинги позволяют производить ресурсы - больше билдингов больше ресурсов)

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

Resource - таблица в которой хранится статическая информация о ресурсе - название и описание (ресурсы это основные элементы количество которых надо накапливаь в игре)

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

Upgrade - таблица в которой хранится статическая информация об апгрейде - название и описание (апгрейды улучшают производство зданий на N процентов)

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

Achievement - таблица в которой хранится статическая информация о ачивменте - название и описание (просто награды типа звезд и медалей за достижения)

Account_Achievement - отображает все достижения сделаные пользователем за все игры которые он когда либо сиграл - нужна для показания успеха игрока и сравнения с успехами других в одной теблице в фигишном UI на фронтенде, таблица обнуляется только когда создается новый пользователь

Notification - таблица в которой хранится статическая информация о нотификейшене - название и описание (нужна для придания игре динамики по смыслу тоже самое что и ачивменты)

Account_Notification - отображает все возможные сообщения в игре - нужны для отображения прогресса игрока когда он достиг определеного количества задний, ресурсов или апгрейдов

Card - таблица в которой хранится статическая информация о картах - название и описание (основная еденица управления процессом игры)

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

Resource_Set - наборы ресурсов обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе) Building_Set - наборы зданий обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе) Upgrade_Set - наборы апгрейдов обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе)

Краткое описание проекта:

===========================

Упрощенная RTS игра в которую можно играть вдвоем по сети. 

Остовные правила:

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

Карты являются единственной возможностью управлять процессом игры и они могут влиять(плюсовать и минусовать) на "Ресурсы" "Здания" и "Апгрейды" собственные и противника.

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

Эти или какие либо иные придуманые экшены будут реализовываться по средствам описания действия той или иной карты. 

Применение карты выражается в плюсовании или минусовании набраных Ресурсов Зданий и Апгрейдов в таблицах - Account_Building, Account_Resource, Account_Upgrade.

В списке карт каждая карта может появиться тогда когда для нее есть все ее требуемые "Ресурсы" "Здания" и "Апгрейды".

После использования карты мы создаем запрос в REST API нашего серверсайда и вычитаем все расходники из таблиц:

Account_Building, Account_Resource, Account_Upgrade, для себя и для противника.

Описание игры:

===========================

Игра состоит из 4-х html страниц(с которых будут делаться все наши запросы в наш REST сервис с использованием JavaScript+Ajax+Json):

Станица Login-а или Create new User. Alt text

Страница списка всех доступных игровых комнат (Room-ов) в которых можно играть, каждый элемент списка состоит из "номер комнаты", "названия комнаты", "количесво игроков в комнате". и кнопки:
"Join Room" - если в выбраной комнате есть один игрок то сразу начать игру, если вы в комнате один то занять место в ожидании когда прийдет другой игрок и стартанет игру.

Alt text


Страница где и происходит сам бой между игроками куда мы попадаем после старта игры. Состоит из следующих компонентов:

- "Список Построеных Зданий" (table Building and Account_Building)

- "Список Полученых Ресурсов" (table Resource and Account_Resource)

- "Список Полученых Апгрейдов" (table Upgrade and Account_Upgrade)

- "Список Построеных Зданий Противника" (table Building and Account_Building)

- "Список Полученых Ресурсов Противника" (table Resource and Account_Resource)

- "Список полученых Апгрейдов Противника" (table Upgrade and Account_Upgrade)

- "Список Карт текущего игрока(список карт противника не показываем)" (table Сard and CardGroup)

Alt text

Страница достижений. Таблица в которой отображаются все Ачивки набраные в играх всех игроков упорядоченая по убыванию достижений. (edited)

Alt text

About

Game project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published