Игра «Морской бой» реализована как SPA на Vue.js с использованием TypeScript, canvas и Bootstrap для интерфейса, и Python с FastAPI, Postgres и WebSocket на бэкенде. Приложение поддерживает два режима игры: со случайным противником и с другом, с планами на добавление игры с компьютером.
Основная логика игры, включая расстановку кораблей и управление ходами, выполняется на клиенте. Сервер на Python обеспечивает связь между игроками посредством WebSocket, обрабатывает создание пар игроков и передачу сообщений о действиях. Данные игроков хранятся в базе данных PostgreSQL.
Фронтенд состоит из классов
Критическим замечанием является передача расположения кораблей на клиентскую сторону, что может быть уязвимо. Рекомендуется перенести основную логику игры на бэкенд. Также стоит рассмотреть замену Vuex на Pinia и разделить логику игры от UI.
Изображение носит иллюстративный характер
Основная логика игры, включая расстановку кораблей и управление ходами, выполняется на клиенте. Сервер на Python обеспечивает связь между игроками посредством WebSocket, обрабатывает создание пар игроков и передачу сообщений о действиях. Данные игроков хранятся в базе данных PostgreSQL.
Фронтенд состоит из классов
Ship
, Location
и Game
, которые управляют отображением и логикой игры. Класс WebSocketManager
отвечает за взаимодействие с сервером, а GameProcessManager
обрабатывает сообщения и обновления состояния игры. Критическим замечанием является передача расположения кораблей на клиентскую сторону, что может быть уязвимо. Рекомендуется перенести основную логику игры на бэкенд. Также стоит рассмотреть замену Vuex на Pinia и разделить логику игры от UI.