artyo / minesweeper
Minesweeper Game
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/artyo/minesweeper
Requires
- wp-cli/php-cli-tools: ^0.12.6
Requires (Dev)
README
Проект представляет собой консольную игру "Сапёр" (Minesweeper) на PHP. Игрок открывает клетки на квадратном поле, избегая мин. Цель — открыть все безопасные клетки. Если открыта клетка с миной, игра заканчивается поражением.
Игра поддерживает интерактивный ввод координат для открытия клеток и установки флагов, а также вывод справки по ключу запуска.
Правила и управление
Правила игры
- Игрок открывает клетки, избегая мин.
- Если мины нет, клетка показывает количество соседних мин (по 8 направлениям).
- Если рядом с открытой клеткой нет мин (0), автоматически раскрывается область пустых клеток до ближайших чисел.
- Можно ставить и убирать флаги на подозрительных клетках.
Команды во время игры
row col— открыть клетку по координатам(row, col)M row col— установить или убрать флаг на клетке(row, col)
Подсказка: индексация строк и столбцов начинается с 0 и отображается в заголовках поля.
Ограничения
- Размер поля не меньше 2.
- Количество мин от 1 до
(size * size) - 1. - Если количество мин не указано, используется значение по умолчанию ≈ 15% от числа клеток (зажатое в допустимый диапазон).
- Координаты ячеек должны быть в пределах поля.
Требования
- PHP: 7.4 или выше
- Composer: для установки зависимостей —
https://getcomposer.org/doc/
Установка и запуск
Вариант 1: Установка через Packagist (глобально)
- Пакет на Packagist:
https://packagist.org/packages/artyo/minesweeper
- Установите пакет глобально через Composer:
composer global require artyo/minesweeper
Убедитесь, что глобальная папка Composer (
~/.composer/vendor/binили~/.config/composer/vendor/bin) добавлена в переменную окруженияPATH.
- Запустите игру из любого места:
minesweeper
При запуске без параметров откроется главное меню с выбором действий.
Для справки по ключам запуска:
minesweeper --help
Вариант 2: Установка из исходников (GitHub)
- Клонируйте репозиторий:
git clone https://github.com/artyo/minesweeper
- Перейдите в каталог проекта и установите зависимости:
cd minesweeper
composer install
- Запустите игру:
php bin/minesweeper
При запуске без параметров откроется главное меню с выбором действий.
Справка по ключам запуска:
php bin/minesweeper --help
Главное меню
При запуске игры без параметров открывается интерактивное главное меню:
=== ГЛАВНОЕ МЕНЮ САПЁРА ===
Выберите действие:
1. Новая игра
2. Список сохранённых партий
3. Повтор игры
4. Справка
0. Выход
Введите номер (0-4):
Доступные действия:
- 1. Новая игра - начать новую партию с настройкой параметров
- 2. Список сохранённых партий - просмотр истории всех игр
- 3. Повтор игры - пошаговое воспроизведение любой сохранённой партии
- 4. Справка - подробная информация о правилах и командах
- 0. Выход - завершение программы
Пример игрового процесса
- При запуске укажите размер поля (по умолчанию 10, минимум 2).
- Затем будет показан допустимый диапазон мин и значение по умолчанию (≈ 15% клеток).
- Введите
row colдля открытия клетки илиM row colдля установки/снятия флага. - Победа — когда открыты все безопасные клетки.
Функционал базы данных
Игра поддерживает сохранение и воспроизведение партий в базе данных SQLite.
Возможности
- Автоматическое сохранение: Все завершённые игры автоматически сохраняются в базу данных
- Просмотр истории: Просмотр списка всех сохранённых партий с деталями
- Повтор игры: Полное воспроизведение любой сохранённой партии пошагово
Сохраняемая информация
Для каждой игры в базе сохраняется:
- Дата и время игры
- Имя игрока
- Размер поля и количество мин
- Точные позиции всех мин
- Результат игры (победа/поражение)
- Полная запись всех ходов с результатами
Команды для работы с базой данных
Все функции базы данных доступны как через главное меню, так и через командную строку:
Просмотр списка игр
minesweeper --list
или
minesweeper -l
Показывает таблицу всех сохранённых игр с:
- ID игры
- Имя игрока
- Дата игры
- Размер поля
- Количество мин
- Результат
- Общее количество ходов
Повтор сохранённой игры
minesweeper --replay <ID>
или
minesweeper -r <ID>
Где <ID> — номер игры из списка.
Как работает повтор:
- Восстанавливается точное расположение мин
- Показывается поле в начальном состоянии
- По нажатию Enter выполняется следующий ход
- Отображается состояние поля после каждого хода
- Показывается описание каждого хода (открытие клетки/установка флага)
- Можно прервать повтор командой
qилиquit
База данных
- Файл базы данных:
data/minesweeper.db - Автоматически создаётся при первом запуске
- Использует SQLite для простоты и портабельности
Используемые библиотеки
wp-cli/php-cli-tools— вспомогательные утилиты для CLIgabordemooij/redbean— ORM-библиотека RedBeanPHP для работы с базой данных