fhj7438ht/minesweeper

There is no license information available for the latest version (v3.0.0) of this package.

Installs: 8

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/fhj7438ht/minesweeper

v3.0.0 2025-10-13 16:43 UTC

This package is auto-updated.

Last update: 2025-12-28 20:06:08 UTC


README

Консольная игра "Сапёр" для PHP.

Установка

Через Composer (рекомендуется)

composer require fhj7438ht/minesweeper

После установки запустите игру:

php ./vendor/bin/minesweeper.php

Установка из исходного кода

Минимальные требования:

  • PHP >= 7.4
  • Composer (глобально доступен как команда composer)

Установка зависимостей:

composer install

Запуск игры:

php bin/minesweeper.php

Игровой процесс

Начало игры

При запуске игры без параметров или с параметром --new (-n) начинается новая игра. Программа запросит у вас:

  1. Имя игрока (только английские буквы, для сохранения в базе данных)
  2. Количество строк (по умолчанию 9)
  3. Количество столбцов (по умолчанию 9)
  4. Количество мин (по умолчанию 10)

Управление игрой

Ввод координат

  • Открыть ячейку: введите два числа через пробел (строка столбец)
    • Пример: 1 1 - открыть ячейку в строке 1, столбце 1
  • Отметить ячейку: введите M и два числа через пробел
    • Пример: M 2 3 - отметить ячейку в строке 2, столбце 3
  • Выйти из игры: введите q или quit
    • Игра сохранится и вы сможете продолжить позже

Символы на поле

  • . - закрытая ячейка
  • M - отмеченная ячейка (флаг)
  • * - мина (показывается при проигрыше)
  • (пробел) - пустая ячейка
  • 1-8 - количество мин в соседних ячейках

Параметры командной строки

# Новая игра (по умолчанию)
minesweeper
minesweeper --new
minesweeper -n

# Список сохраненных игр
minesweeper --list
minesweeper -l

# Повтор игры с ID
minesweeper --replay 123
minesweeper -r 123

# Справка
minesweeper --help
minesweeper -h

Правила игры

  1. Цель: открыть все ячейки, не содержащие мины
  2. Числа: показывают количество мин в соседних ячейках
  3. Отметки: используйте M для отметки подозрительных ячеек
  4. Победа: когда все безопасные ячейки открыты
  5. Проигрыш: при открытии ячейки с миной

Пример игровой сессии

=== Добро пожаловать в игру Сапёр! ===

Введите количество строк (по умолчанию 9): 
Введите количество столбцов (по умолчанию 9): 
Введите количество мин (по умолчанию 10): 

=== Игровое поле ===

    1  2  3  4  5  6  7  8  9
 1  .  .  .  .  .  .  .  .  .
 2  .  .  .  .  .  .  .  .  .
 3  .  .  .  .  .  .  .  .  .
 4  .  .  .  .  .  .  .  .  .
 5  .  .  .  .  .  .  .  .  .
 6  .  .  .  .  .  .  .  .  .
 7  .  .  .  .  .  .  .  .  .
 8  .  .  .  .  .  .  .  .
 9  .  .  .  .  .  .  .  .  .

Введите координаты (строка столбец) или M строка столбец для отметки: 1 1

Работа с базой данных

Сохранение игр

Игра автоматически сохраняется в базу данных SQLite при каждом ходе. База данных создается в файле minesweeper.db в текущей директории.

Возможности сохранения:

  • Автоматическое сохранение новой игры при создании
  • Обновление состояния игры после каждого хода
  • Сохранение финального состояния при завершении игры
  • Сохранение игры при выходе (команда q или quit)
  • Запись всех ходов в формате: номер хода | координаты | результат

Просмотр сохраненных игр

# Показать список всех сохраненных игр
minesweeper --list
minesweeper -l

Список показывает:

  • ID игры
  • Имя игрока
  • Размеры поля (строки, столбцы)
  • Количество мин
  • Статус игры (Активна, Победа, Проигрыш)
  • Дату создания и последнего обновления

Воспроизведение игр

# Воспроизвести игру по ID
minesweeper --replay 123
minesweeper -r 123

Возможности воспроизведения:

  • Пошаговое воспроизведение всех ходов игры
  • Просмотр координат и результатов каждого хода
  • Полное восстановление состояния поля
  • Просмотр завершенных игр (победа/проигрыш)
  • Продолжение незавершенных игр

Структура базы данных

База данных SQLite содержит две таблицы:

Таблица games:

  • id — уникальный идентификатор игры
  • player_name — имя игрока
  • rows, cols, mines — параметры игрового поля
  • board_state — сериализованное состояние игрового поля
  • visible_state — сериализованное состояние видимых ячеек
  • game_over, game_won — статус завершения игры
  • opened_cells — количество открытых ячеек
  • created_at, updated_at — временные метки

Таблица moves:

  • id — уникальный идентификатор хода
  • game_id — ссылка на игру
  • move_number — номер хода в игре
  • row, col — координаты ячейки
  • action — действие (open/flag)
  • result — результат хода (мины нет/взорвался/выиграл/отмечена)
  • created_at — время хода

Архитектура проекта

Структура файлов

  • src/Game.php — основная игровая логика
  • src/Controller.php — обработка командной строки и игровой цикл
  • src/View.php — отображение интерфейса
  • src/Database.php — работа с базой данных SQLite
  • src/GameRepository.php — управление данными игр
  • bin/minesweeper.php — точка входа в приложение

Использование в коде

После установки пакета через Composer, вы можете использовать его в своем PHP коде:

<?php
require 'vendor/autoload.php';

use fhj7438ht\Minesweeper\Controller;
use fhj7438ht\Minesweeper\Game;

// Запуск игры
Controller\startGame();

// Создание игрового объекта
$game = new Game(9, 9, 10);

Ссылки