funskrip / hangman
Implementation of the game "Hangman"
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
pkg:composer/funskrip/hangman
Requires
- gabordemooij/redbean: ^5.7
- wp-cli/php-cli-tools: ^0.12.0
This package is not auto-updated.
Last update: 2025-12-09 21:05:38 UTC
README
Описание проекта
Проект включает разработку игры "Виселица" (Hangman) с использованием реляционной базы данных для сохранения результатов игр. Игра реализована на языке PHP с использованием базы данных SQLite. Пользователям предоставляется возможность просматривать историю игр и воспроизводить ранее сыгранные партии.
Цель игры - угадать загаданное компьютером слово из шести букв. Игрок пытается угадать буквы, а затем и все слово целиком. Если игрок правильно угадывает букву, компьютер вписывает ее в соответствующую клетку. Если ошибается, то рисует одну из частей тела повешенного человека (используется псевдографика). Чтобы победить, игрок должен угадать все буквы в слове до того, как повешенный человечек будет полностью нарисован.
Правила игры
- Компьютер загадывает слово из шести букв.
- Игрок пытается угадать буквы, вводя их по одной.
- Если буква угадана верно, она отображается в соответствующей клетке.
- Если буква не угадана, рисуется одна из частей тела повешенного человека.
- Игра заканчивается победой, если игрок угадывает все буквы в слове до того, как повешенный человечек будет полностью нарисован.
- Игра заканчивается поражением, если повешенный человечек будет полностью нарисован до угадывания всех букв.
Требования
- Список слов: Заранее сгенерированный список слов из шести букв, сохраненный в базе данных.
- Сохранение данных: Вся информация об играх и ходах сохраняется в базе данных SQLite.
- Хранение данных:
- Дата игры
- Имя игрока
- Загаданное компьютером слово
- Исход игры
- Запись ходов в формате:
номер попытки | предложенная буква | результат (угадал/не угадал)
- Режимы игры:
- Новая игра
- Просмотр списка сохраненных игр
- Повтор сохраненной партии (воспроизведение ходов)
Окружение и требования для запуска
-
PHP:
- Версия: 7.4 или выше.
- Настройки в
php.ini:- Включите SQLite (
extension=sqlite3). - Включите SQLite (
extension=pdo_sqlite). - Убедитесь, что настройки отображения ошибок (
display_errors) включены в режиме разработки.
- Включите SQLite (
-
SQLite:
- Версия: 3.x.
- Проверьте наличие прав записи в каталоге, где находятся файлы баз данных.
-
Composer:
- Composer должен быть установлен глобально.
- Используйте команду
composerдля управления зависимостями. - Для установки Composer следуйте официальной документации.
Установка и запуск проекта
-
Склонируйте репозиторий:
git clone https://github.com/FunSkrip/hangman
-
Перейдите в каталог проекта:
cd C:\...\hangman
-
Установите зависимости через Composer:
composer install
-
Запуск игры: Выполните команду для запуска игры:
php bin/hangman.php
- Или если ваш пакет опубликован на Packagist, установите его глобально:
composer global require funskrip/hangman
- И затем выполните команду:
hangman
Игровой процесс
Команды
--new(краткий параметр-n). Новая игра. Этот же режим используется по умолчанию, если программа запускается без параметров.--list(-l). Вывод списка всех сохраненных игр.--statistics(-s). Вывод статистики за все игры.--replay id(-r id). Повтор игры с идентификатором id.--help(-h). Вывод краткой информации о приложении и доступных ключах для запуска в разных режимах.
- Начало игры:
- При запуске игры пользователю необходимо ввести свое имя.
- После авторизации предлагается ввести букву или слово целиком.
- Если пользователь вводит букву, она проверяется на наличие в загаданном слове.
- Если пользователь вводит слово целиком, оно проверяется на совпадение с загаданным словом.
- Ввод данных:
- Введите букву или слово целиком.
- Если введено несколько букв, они будут рассматриваться как попытка угадать слово целиком.
- Если введена одна буква, она будет проверяться на наличие в загаданном слове.
- Результаты:
- Если буква угадана верно, она отображается в соответствующей клетке.
- Если буква не угадана, рисуется одна из частей тела повешенного человека.
- Игра заканчивается победой, если игрок угадывает все буквы в слове до того, как повешенный человечек будет полностью нарисован.
- Игра заканчивается поражением, если повешенный человечек будет полностью нарисован до угадывания всех букв.
- Конец игры:
- После завершения игры будет выведено сообщение о результате игры.
- Будет отображено правильно загаданное слово.
Структура Базы данных
games
| Колонка | Тип | Комментарий |
|---|---|---|
| id | ID | Уникальный идентификатор игры, первичный ключ AUTO_INCREMENT |
| date | TEXT | Дата игры |
| player_name | TEXT | Имя игрока |
| word_id | INT | Загаданное компьютером слово (id ссылка на другую таблицу) |
| attempts | INT | Количество ошибочных попыток |
| won | BOOLEAN | Исход игры (угадал/не угадал) |
moves
| Колонка | Тип | Комментарий |
|---|---|---|
| id | ID | Уникальный идентификатор попытки, первичный ключ AUTO_INCREMENT |
| game_id | INT | Id игры, ссылка на другую таблицу |
| move_number | INT | Номер попытки |
| letter | TEXT | Предложенная буква |
| result | BOOLEAN | Результат |
words
| Колонка | Тип | Комментарий |
|---|---|---|
| id | ID | Уникальный идентификатор слово, первичный ключ AUTO_INCREMENT |
| word | TEXT | Слова, которые нужно отгадывать |
words по умолчанию заполнен "apple", "banana", "cherry", "orange", "grape", "lemon"
Примечания
-
Проверьте права на запись в каталог с базой данных SQLite.
-
Дополнительную информацию можно найти в документации PHP, SQLite и Composer: