shindasayonara / minesweeper
Implementation of the game "Minesweeper"
Installs: 39
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- gabordemooij/redbean: ^5.7
- wp-cli/php-cli-tools: ^0.12.0
README
Описание проекта
Проект включает разработку игры "Сапер" (Minesweeper) с использованием реляционной базы данных для сохранения результатов игр. Игра реализована на языке PHP с использованием базы данных SQLite. Пользователям предоставляется возможность просматривать историю игр и воспроизводить ранее сыгранные партии.
Цель игры - открыть все ячейки, не содержащие мины. Если игрок открывает ячейку с миной, он проигрывает. Если ячейка не заминирована, в ней отображается количество мин, соседствующих с этой ячейкой.
Правила игры
- Игрок открывает ячейки, избегая мин. Открыв мину, игрок проигрывает.
- Если мины нет, ячейка отображает число соседних заминированных ячеек.
- Если рядом с открытой ячейкой нет мин, открывается область незаминированных ячеек до тех пор, пока не встретится ячейка с цифрой.
Требования
- Размер поля и количество мин: Вводятся пользователем перед началом игры.
- Сохранение данных: Вся информация об играх и ходах сохраняется в базе данных SQLite.
- Хранение данных:
- Дата игры
- Имя игрока
- Размер поля и количество мин
- Расположение мин
- Исход игры
- Запись ходов в формате:
номер хода | координаты ячейки | результат (мимо/взорвался/выиграл)
- Режимы игры:
- Новая игра
- Просмотр списка сохраненных игр
- Повтор сохраненной партии (воспроизведение ходов)
Игровой процесс
Начало игры
Перед началом партии пользователю будет предложено ввести следующие параметры:
- Размер поля: Укажите размер игрового поля в формате
ширина высота
(например,10 10
для поля 10x10). - Количество мин: Укажите общее количество мин на поле (например,
20
).
Ввод координат
Игрок открывает ячейки, вводя координаты в формате X Y
, где:
X
— номер столбца (от 1 до ширины поля).Y
— номер строки (от 1 до высоты поля).
Пример ввода координат для открытия ячейки на позиции (3, 5):
3 5
Игровые действия Открытие ячейки: Введите координаты ячейки, чтобы открыть её. Проигрыш: Если игрок открыл ячейку с миной, игра заканчивается, и выводится сообщение о проигрыше. Выигрыш: Игра завершается, когда все ячейки без мин открыты. Команды
-
--save <имя>: Сохранить текущую игру с указанным именем. Игра будет добавлена в базу данных, и игрок сможет ее воспроизвести позже.
-
--list: Просмотр списка сохраненных игр. После выполнения команды будет выведен список с датами, именами игроков и результатами.
-
--replay <номер>: Воспроизвести ранее сохраненную партию по указанному номеру из списка сохраненных игр. Игрок сможет увидеть свои предыдущие ходы и результаты.
-
--name <имя>: Указать имя игрока перед началом новой игры. Это имя будет использовано для сохранения результатов игры.
Просмотр сохраненных игр
После завершения игры пользователю будет предложено:
- Просмотреть список сохраненных игр, в котором будут указаны дата игры, имя игрока и исход.
- Повторить ранее сыгранную партию, вводя номер соответствующей игры из списка.
Окружение и требования для запуска
-
PHP:
- Версия: 7.4 или выше.
- Настройки в
php.ini
:- Включите SQLite (
extension=sqlite3
). - Убедитесь, что настройки отображения ошибок (
display_errors
) включены в режиме разработки.
- Включите SQLite (
-
SQLite:
- Версия: 3.x.
- Проверьте наличие прав записи в каталоге, где находятся файлы баз данных.
-
Composer:
- Composer должен быть установлен глобально.
- Используйте команду
composer
для управления зависимостями. - Для установки Composer следуйте официальной документации.
Установка и запуск проекта
-
Склонируйте репозиторий:
git clone https://github.com/shindasayonara/minesweeper.git
-
Перейдите в каталог проекта:
cd C:\...\minesweeper
-
Установите зависимости через Composer:
composer install
-
Запуск игры: Выполните команду для запуска игры:
php bin/minesweeper.php
- Или если ваш пакет опубликован на Packagist, установите его глобально:
composer global require shindasayonara/minesweeper
- И затем выполните команду:
minesweeper
Примечания
-
Проверьте права на запись в каталог с базой данных SQLite.
-
Дополнительную информацию можно найти в документации PHP, SQLite и Composer: