Brain Games
Набор из 5 консольных игр, построенных на арифметике и логике, написанных на PHP.
Доступные игры
- Brain Even - Проверка на чётность Определите, является ли случайное число чётным.
Команда: make brain-even Демонстрация - https://asciinema.org/a/PZIB0AMPHDWAigwTO2UAGq9PI
- Brain Calc - Калькулятор Решите простое арифметическое выражение.
Команда: make brain-calc Демонстрация - https://asciinema.org/a/5gDhJ6Taqf9GAgZvAtUY4W16l
- Brain GCD - Наибольший общий делитель Найдите Наибольший общий делитель двух случайных чисел.
Команда: make brain-gcd Демонстрация - https://asciinema.org/a/bBiNGAePf6ZXq4p0odlB5zFD6
- Brain Progression - Арифметическая прогрессия Найдите пропущенный элемент в прогрессии.
Команда: make brain-progression Демонстрация - https://asciinema.org/a/HawCHRR9MDuvTWbaOEE4d76Zh
- Brain Prime - Простое число Определите, является ли число простым.
Команда: make brain-prime Демонстрация - https://asciinema.org/a/JuOx3oZ2UACiALbcsQ5da10V2
Требования
- PHP 8.0 или выше
- Composer
- Unix-подобная система (Linux, WSL, macOS)
Установка
git clone https://github.com/Eksi-tech/php-project-45.git cd php-project-45
make install
make brain-even
Альтернативный запуск
./bin/brain-even ./bin/brain-calc ./bin/brain-gcd ./bin/brain-progression ./bin/brain-prime
Проверка кода
make lint
make validate
Структура проекта
php-project-45/ ├── bin/ # Исполняемые файлы игр ├── src/ │ ├── Engine.php # Общая игровая логика │ └── Games/ # Логика отдельных игр ├── Makefile # Команды управления └── composer.json # Конфигурация зависимостей
Правила игр Каждая игра состоит из 3 раундов Для победы нужно правильно ответить на все вопросы При неправильном ответе игра завершается
Особенности реализации
- Чистый PHP без фреймворков
- Консольный интерфейс через wp-cli/php-cli-tools
- Автоматическая проверка кода стандартом PSR-12
- Кросс-платформенная совместимость
Технические детали
- Все игры проходят статический анализ в SonarCloud
- Код соответствует стандартам PSR-12
- Используются только безопасные генераторы случайных чисел
- Поддержка Unicode и кириллицы
Разработано в рамках обучения на Hexlet