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
Requires
- gabordemooij/redbean: ^5.7
- wp-cli/php-cli-tools: ^0.12.0
This package is not auto-updated.
Last update: 2025-06-24 18:53:09 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: