WeatherGen — это веб-приложение для администрирования параметров погоды на игровых серверах. Администратор может вручную или автоматически изменять температуру, тип погоды, ветер и влажность, генерировать случайные значения параметров погоды, а также просматривать историю изменений, просматривать актуальную информацию в упрощённом интерфейсе без элементов управления как её видел бы игрок.
Проект реализован на чистом PHP 8.5 с соблюдением принципов архитектурного паттерна MVC.
- Просмотр всех серверов с текущей погодой
- Ручное обновление параметров погоды через форму
- Генерация реалистичной случайной погоды с учётом физических ограничений:
- Температура: от –55 до +55°C
- Ветер: от 0 до 45 м/с
- Влажность: от 0 до 100%
- Просмотр лога последних 50 изменений по каждому серверу
- Добавление новых серверов и игроков
- Переключение в режим просмотра от лица игрока
- Просмотр всех серверов без возможности редактирования
- Доступ к логу изменений
- Автоматическое обновление данных
- Язык: PHP 8.5
- База данных: MySQL 8.0
- Архитектура: MVC (Model–View–Controller)
- Работа с БД: PDO + Singleton (
config/database.php) - Контейнеризация: Docker (
docker-compose.yml) - Тестирование: Ручные HTTP-тесты (
tests.php)
Проект не использует сторонние библиотеки. Всё построено на встроенном PDO.
- Docker
- PHP in PATH (Windows)
-
Клонируйте репозиторий:
git clone https://github.com/Markarov8/ServCh.git cd ServCh -
Запустите проект с помощью Docker Compose:
docker-compose up --build php -S localhost:7070
-
Откройте в браузере:
http://localhost:7070
После инициализации доступны:
Игроки: Player_1, Player_2, Player_3
Серверы: Server_1, Server_2, Server_3
- На главной странице отображаются все серверы с формами изменения данных.
- Кнопка «Сохранить» — ручное обновление погоды.
- Кнопка «Случайно» — генерация погоды в реалистичных пределах от предыдущих значений.
- Каждое изменение (ручное или автоматическое) записывается в таблицу weather_logs.
- Выберите игрока из выпадающего списка в шапке сайта.
- Откроется страница, на которой показан интерфейс сайта если бы его смотрел игрок.
- Данные обновляются автоматически.
- При вводе недопустимых значений (например, температура = 1000) — предупреждение о невозможности применить недопустимые значения.
- Попытка перейти к несуществующему игроку или серверу — возврат на главную с предупреждением о вводе некорректных значений.
- При нажатии на кнопку Лог, открывается страница со списком последних 50 изменений погоды
controllers/— контроллерыmodels/— моделиviews/— виды. Визуальное отображение страницpublic/index.php— роутинг и точка входаtests.php— скрипт ручных тестов (валидация, ошибки)init.sql— скрипт инициализации базы данныхdocker-compose.yml— конфигурация запуска сервисов
- Модель — содержит данные и логику работы с БД
- Контроллер — обрабатывает запросы и вызывает методы модели
- Представление — отвечает только за отображение данных