fhj7438ht/minesweeper 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fhj7438ht/minesweeper

Composer 安装命令:

composer require fhj7438ht/minesweeper

包简介

README 文档

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);

Ссылки

fhj7438ht/minesweeper 适用场景与选型建议

fhj7438ht/minesweeper 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 09 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 fhj7438ht/minesweeper 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 fhj7438ht/minesweeper 我们能提供哪些服务?
定制开发 / 二次开发

基于 fhj7438ht/minesweeper 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 21
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2025-09-14