Skip to content

Latest commit

 

History

History
63 lines (46 loc) · 4.25 KB

README.MD

File metadata and controls

63 lines (46 loc) · 4.25 KB

Tictactoe

A multiplayer tic-tac-toe game.

Сервер для игры Крестики-Нолики

Этот проект представляет собой серверное приложение для игры Крестики-Нолики, написанное на C++ с использованием PostgreSQL для управления данными пользователей и игровых сессий.

Описание

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

Функциональность

  • Регистрация пользователей: Новые пользователи могут зарегистрироваться, введя имя пользователя и пароль.
  • Авторизация пользователей: Существующие пользователи могут войти в систему, используя свои учетные данные.
  • Создание лобби: Пользователи могут создать игровое лобби с заданным именем и паролем.
  • Присоединение к лобби: Пользователи могут присоединяться к существующим лобби, вводя имя и пароль.
  • Обработка запросов: Сервер обрабатывает запросы клиентов, используя многопоточность для обеспечения одновременной работы с несколькими клиентами.

Установка и запуск

  1. Убедитесь, что у вас установлены следующие зависимости:

    • make
    • g++
    • docker
    • libpqxx-dev
  2. Клонируйте репозиторий:

    git clone https://github.com/Wammero/Tictactoe.git
    cd Tictactoe
    make
    cd build (в других терминалах)
    client/client --connect 127.0.0.1:2020

Тестирование (скрин есть в репо)

Для тестирования работы сервера и клиента:

  1. Напишите make в главной директории
  2. Запустите клиент: ./client/client --connect 127.0.0.1:2020
  3. Пройдите через регистрацию или авторизацию, создайте или присоединитесь к лобби.

Особенностив

  • Поддержка нескольких партий без переподключения (играть заново с тем же игроком)
  • Поддержка нескольких игровых сессий одновременно (несколько пар игроков)
  • Регистрация игроков и ведение статистики

Недочёты

  • Всё находится в одном main.cpp файле, что затрудняет чтение.
  • Использование базы данных для session и lobbies, когда можно всё хранить в кэше.
  • Нельзя сразу же сыграть с другим пользователем, приходится либо снова играть с тем же, либо перезаходить.
  • Нет возможности сдаться, нет чата, нет возможности настроить режим игры (NxM), нет бота, нет возможности подключиться наблюдателем

Если будут проблемы

  • Возможно сначала не создалась бд, пробуйте запустить снова (make)
  • не запускается проект: sudo service postgresql stop

Makefile

  • make - для запуска проекта
  • make clean - для чистки build и бд