/*! @file client.hpp Заголовочный файл клиента для игры в лабиринт на базе сокетов. @author ParkSuMin @date 2025.04.30 */ #ifndef CLIENT_HPP #define CLIENT_HPP #include #include #include #include #include #include /*! Класс клиента для взаимодействия с сервером игры в лабиринт. */ class Client{ private: int sock; ///< Сокет для соединения с сервером. public: /*! Конструктор по умолчанию. @details Конструктор создаёт сокет клиента и связывает его с предоставленным операционной системой адресом. В случае ошибки вызывает исключение. @throw std::runtime_error При ошибке создания или связывания сокета. */ Client(); /*! Запускает клиентское приложение. @details Устанавливает соединение с сервером по указанному хосту и порту, после чего вызывает игровой цикл. @param host Адрес сервера (название хоста или IP-адрес). @param port Порт сервера для подключения. */ void run(const std::string& host, const unsigned short port); /*! Основной игровой цикл. @details Обрабатывает ввод пользователя, отправляет команды на сервер и получает ответы. */ void game(); /*! Отправляет тестовый запрос (ping) на сервер. @details Используется для проверки доступности сервера. @param server_address Структура адреса сервера. @return Целое число, указывающее результат выполнения (0 — успех, иначе — ошибка). */ int ping(struct sockaddr_in); }; #endif