PHPackages                             tanner/hangman - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tanner/hangman

ActiveProject[Utility &amp; Helpers](/categories/utility)

tanner/hangman
==============

Game Hangman

v5.0(5mo ago)02MITPHP

Since Nov 24Pushed 5mo agoCompare

[ Source](https://github.com/SakatoGin/Hangman)[ Packagist](https://packagist.org/packages/tanner/hangman)[ RSS](/packages/tanner-hangman/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (3)Used By (0)

Task05 - Игра "Виселица" (RedBeanPHP ORM)
=========================================

[](#task05---игра-виселица-redbeanphp-orm)

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

[](#описание-проекта)

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

В данной лабораторной работе (ЛР-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

[](#особенности-реализации-в-лр-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 &gt;= 8.1 (CLI-режим)
- Composer (глобально установленный)
- SQLite (для хранения данных)
- Интернет/локальный доступ к пакету **gabordemooij/redbean** (устанавливается через Composer)

###### Установка и запуск

[](#установка-и-запуск)

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

[](#1-клонировать-репозиторий)

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

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

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

[](#2-установка-зависимостей)

```
composer install
```

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

[](#3-сгенерировать-автозагрузку)

```
composer dump-autoload -o
```

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

[](#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)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance70

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

175d ago

Major Versions

v4.0 → v5.02025-11-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/ae49c6bfc6f9006d5ee0af309a1f6d8dc8ebda738eeb5f09d0084ad186c3cedb?d=identicon)[SKGin](/maintainers/SKGin)

---

Top Contributors

[![SakatoGin](https://avatars.githubusercontent.com/u/198086663?v=4)](https://github.com/SakatoGin "SakatoGin (1 commits)")

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/tanner-hangman/health.svg)

```
[![Health](https://phpackages.com/badges/tanner-hangman/health.svg)](https://phpackages.com/packages/tanner-hangman)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
