funskrip/hangman

Implementation of the game "Hangman"

dev-main 2024-11-12 15:52 UTC

This package is not auto-updated.

Last update: 2025-06-24 18:53:09 UTC


README

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

Проект включает разработку игры "Виселица" (Hangman) с использованием реляционной базы данных для сохранения результатов игр. Игра реализована на языке PHP с использованием базы данных SQLite. Пользователям предоставляется возможность просматривать историю игр и воспроизводить ранее сыгранные партии.

Цель игры - угадать загаданное компьютером слово из шести букв. Игрок пытается угадать буквы, а затем и все слово целиком. Если игрок правильно угадывает букву, компьютер вписывает ее в соответствующую клетку. Если ошибается, то рисует одну из частей тела повешенного человека (используется псевдографика). Чтобы победить, игрок должен угадать все буквы в слове до того, как повешенный человечек будет полностью нарисован.

Правила игры

  • Компьютер загадывает слово из шести букв.
  • Игрок пытается угадать буквы, вводя их по одной.
  • Если буква угадана верно, она отображается в соответствующей клетке.
  • Если буква не угадана, рисуется одна из частей тела повешенного человека.
  • Игра заканчивается победой, если игрок угадывает все буквы в слове до того, как повешенный человечек будет полностью нарисован.
  • Игра заканчивается поражением, если повешенный человечек будет полностью нарисован до угадывания всех букв.

Требования

  • Список слов: Заранее сгенерированный список слов из шести букв, сохраненный в базе данных.
  • Сохранение данных: Вся информация об играх и ходах сохраняется в базе данных SQLite.
  • Хранение данных:
    • Дата игры
    • Имя игрока
    • Загаданное компьютером слово
    • Исход игры
    • Запись ходов в формате: номер попытки | предложенная буква | результат (угадал/не угадал)
  • Режимы игры:
    • Новая игра
    • Просмотр списка сохраненных игр
    • Повтор сохраненной партии (воспроизведение ходов)

Окружение и требования для запуска

  1. PHP:

    • Версия: 7.4 или выше.
    • Настройки в php.ini:
      • Включите SQLite (extension=sqlite3).
      • Включите SQLite (extension=pdo_sqlite).
      • Убедитесь, что настройки отображения ошибок (display_errors) включены в режиме разработки.
  2. SQLite:

    • Версия: 3.x.
    • Проверьте наличие прав записи в каталоге, где находятся файлы баз данных.
  3. Composer:

    • Composer должен быть установлен глобально.
    • Используйте команду composer для управления зависимостями.
    • Для установки Composer следуйте официальной документации.

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

  1. Склонируйте репозиторий:

    git clone https://github.com/FunSkrip/hangman
  2. Перейдите в каталог проекта:

    cd C:\...\hangman
  3. Установите зависимости через Composer:

    composer install
  4. Запуск игры: Выполните команду для запуска игры:

    php bin/hangman.php
    • Или если ваш пакет опубликован на Packagist, установите его глобально:
    composer global require funskrip/hangman
    • И затем выполните команду:
    hangman

Игровой процесс

Команды

  1. --new (краткий параметр -n). Новая игра. Этот же режим используется по умолчанию, если программа запускается без параметров.
  2. --list (-l). Вывод списка всех сохраненных игр.
  3. --statistics (-s). Вывод статистики за все игры.
  4. --replay id (-r id). Повтор игры с идентификатором id.
  5. --help (-h). Вывод краткой информации о приложении и доступных ключах для запуска в разных режимах.
  1. Начало игры:
  • При запуске игры пользователю необходимо ввести свое имя.
  • После авторизации предлагается ввести букву или слово целиком.
  • Если пользователь вводит букву, она проверяется на наличие в загаданном слове.
  • Если пользователь вводит слово целиком, оно проверяется на совпадение с загаданным словом.
  1. Ввод данных:
  • Введите букву или слово целиком.
  • Если введено несколько букв, они будут рассматриваться как попытка угадать слово целиком.
  • Если введена одна буква, она будет проверяться на наличие в загаданном слове.
  1. Результаты:
  • Если буква угадана верно, она отображается в соответствующей клетке.
  • Если буква не угадана, рисуется одна из частей тела повешенного человека.
  • Игра заканчивается победой, если игрок угадывает все буквы в слове до того, как повешенный человечек будет полностью нарисован.
  • Игра заканчивается поражением, если повешенный человечек будет полностью нарисован до угадывания всех букв.
  1. Конец игры:
  • После завершения игры будет выведено сообщение о результате игры.
  • Будет отображено правильно загаданное слово.

Структура Базы данных

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"

Примечания

Ссылки на пакеты