tanner/hangman

Game Hangman

Maintainers

Package info

github.com/SakatoGin/Hangman

Type:project

pkg:composer/tanner/hangman

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v5.0 2025-11-24 18:33 UTC

This package is auto-updated.

Last update: 2026-03-24 19:23:16 UTC


README

Описание проекта

Программа для консольной игры "Виселица".

В данной лабораторной работе (ЛР-5) игра доработана:

  • для хранения данных по партиям используется база данных SQLite;
  • доступ к базе реализован через ORM-библиотеку RedBeanPHP (без прямых SQL-запросов и ручного PDO).

Правила игры

Компьютер загадывает слово из 6 букв (английский алфавит). Игрок должен угадать слово, по одной вводя буквы с клавиатуры.

После каждой попытки программа:

  • открывает все позиции угаданной буквы в слове;
  • если буквы нет в слове — увеличивает количество ошибок и дорисовывает часть человечка на виселице;
  • показывает текущее состояние виселицы, слова и список уже использованных букв.

Игрок выигрывает, если успевает открыть все буквы слова до того, как будет полностью дорисован человечек. Если количество ошибок достигает 6, игрок проигрывает.

Сохраняемая информация

Информация о каждой игре сохраняется в базе данных SQLite (через ORM RedBeanPHP):

  • дата и время игры;
  • имя игрока;
  • загаданное слово;
  • исход игры (угадал / не угадал);
  • список всех попыток:
    • номер хода;
    • введённая буква;
    • результат (угадал букву / не угадал).
Режимы работы программы

Программа поддерживает несколько режимов работы.

  1. Новая игра
    Запускает новую партию:

    • спрашивает имя игрока;
    • выбирает случайное слово из таблицы слов;
    • запускает игровой цикл до победы или поражения;
    • сохраняет результаты партии и все ходы в базе данных.
  2. Список сохранённых игр
    Выводит список всех сыгранных партий:

    • ID игры;
    • дата и время;
    • имя игрока;
    • загаданное слово;
    • результат (угадал / не угадал).
  3. Повтор сохранённой партии
    Позволяет просмотреть ход любой сохранённой игры по её ID:

    • пошаговая визуализация виселицы;
    • отображение текущего состояния угадываемого слова;
    • вывод используемых букв и результата каждого хода.
  4. Интерактивное меню (по умолчанию)
    При запуске без параметров программа открывает консольное меню:

    1. Новая игра
    2. Список сохранённой игры
    3. Повтор сохранённой игры
    4. Выход

Также поддерживаются ключи командной строки (без меню):

  • php bin/hangman.php --new или php bin/hangman.php -n — новая игра
  • php bin/hangman.php --list или php bin/hangman.php -l — список игр
  • php bin/hangman.php --replay ID или php bin/hangman.php -r ID — повтор игры с указанным ID
  • php bin/hangman.php --help или php bin/hangman.php -h — справка по режимам
Особенности реализации в ЛР-5
  • Вся работа с базой данных перенесена на ORM RedBeanPHP:
    • подключение выполняется в Database::init() через R::setup('sqlite:...');
    • таблицы создаются и изменяются автоматически в "fluid"-режиме;
    • операции чтения/записи выполняются с помощью функций R::dispense(), R::store(), R::findAll(), R::find(), R::load() и т.п.;
    • прямые SQL-запросы (SELECT, INSERT, UPDATE, CREATE TABLE и т.д.) в коде не используются.
  • Логика работы с БД изолирована в классе Game:
    • создание игры;
    • добавление попыток;
    • завершение игры (win/lose);
    • выборка списка игр и одной игры с её попытками.
Требования для запуска проекта
  • PHP >= 8.1 (CLI-режим)
  • Composer (глобально установленный)
  • SQLite (для хранения данных)
  • Интернет/локальный доступ к пакету gabordemooij/redbean (устанавливается через Composer)
Установка и запуск

1. Клонировать репозиторий

git clone https://github.com/ИМЯ_ПОЛЬЗОВАТЕЛЯ/402_DBAppTech_CHumakov_VA.git
cd 402_DBAppTech_CHumakov_VA/Task05/hangman

(адрес репозитория и путь можно скорректировать под вашу структуру)

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

composer install

3. Сгенерировать автозагрузку

composer dump-autoload -o

4. Запуск проекта

Интерактивное меню:

php bin/hangman.php

Примеры запуска конкретных режимов:

  • Новая игра:
    php bin/hangman.php --new
  • Список игр:
    php bin/hangman.php --list
  • Повтор игры с ID = 3:
    php bin/hangman.php --replay 3

Структура проекта

Task05/
└─ hangman/
├─ bin/
│ └─ hangman.php # Запускной скрипт игры (CLI, меню/режимы)
├─ src/
│ ├─ Game.php # Логика игры и работа с БД через RedBeanPHP (модель)
│ ├─ Controller.php # Управление режимами, игровой процесс
│ └─ View.php # Отображение и взаимодействие с пользователем (консоль)
├─ vendor/
│ └─ ... # Зависимости Composer (включая RedBeanPHP)
├─ .gitignore
├─ composer.json # Настройки Composer, автозагрузка (PSR-4), зависимости (RedBeanPHP)
├─ composer.lock
└─ README.md # Документация проекта для ЛР-5

Автор
SakatoGin(Chumakov VA)