Практическое задание №3: Память и подтверждение действий: README.md

This commit is contained in:
2026-05-27 08:41:08 +00:00
parent 24f09fe830
commit 14a7267ddc
@@ -1,112 +1,129 @@
# Практическое задание №3: Память и подтверждение действий # Практическое задание №3
**Память и подтверждение действий**
---
## Описание ## Описание
В этом проекте реализована простая консольная игра «Память».
Игра состоит из двух режимов:
1. **Классический** – игроку показывается последовательность случайных символов, после чего он должен её воспроизвести. В этом проекте реализована простая консольная утилита, которая демонстрирует работу с памятью (сохранение данных в файл) и подтверждением пользовательских действий.
2. **С подтверждением действий** – каждый ввод пользователя проверяется и при ошибке выводится сообщение об ошибке.
Для улучшения визуального восприятия использована библиотека `rich`, которая позволяет красиво форматировать текст в терминале (цвета, таблицы, индикаторы прогресса). Основные возможности:
- **Сохранение** введённых пользователем строк в JSON‑файл.
- **Загрузка** ранее сохранённого списка строк при запуске программы.
- **Подтверждение** удаления элемента из памяти через диалог «Да/Нет».
- Красивый вывод сообщений и таблиц с помощью библиотеки `rich`.
---
## Структура проекта ## Структура проекта
``` ```
memory_game/ memory_confirm/
├── main.py # точка входа – запускает игру ├── data.json # Хранилище (создаётся при первом запуске)
├── game.py # логика игры и вспомогательные функции ├── main.py # Точка входа
└── requirements.txt └── utils.py # Вспомогательные функции
``` ```
- **`main.py`** – основной скрипт, который запускает CLI‑интерфейс.
- **`utils.py`** – содержит функции для чтения/записи JSON и подтверждения действий.
---
## Установка зависимостей ## Установка зависимостей
```bash ```bash
# Клонируйте репозиторий (если ещё не сделали это)
git clone https://github.com/your-username/memory_game.git
cd memory_game
# Создайте виртуальное окружение (рекомендуется) # Создайте виртуальное окружение (рекомендуется)
python -m venv .venv python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости из файла requirements.txt # Установите зависимости из requirements.txt
pip install -r requirements.txt pip install -r requirements.txt
``` ```
`requirements.txt` содержит только одну строку: `requirements.txt` содержит:
```text ```text
rich>=13.0.0 rich>=13.0.0
``` ```
## Запуск программы Если файла `requirements.txt` нет, установите вручную:
### 1. Классический режим
```bash ```bash
python main.py classic pip install rich
```
Игра начнётся с простого режима «памяти». В терминале будет показана последовательность символов, затем вы будете приглашены ввести её.
### 2. Режим подтверждения действий
```bash
python main.py confirm
```
В этом режиме после каждого ввода проверяется правильность и при ошибке выводится красное сообщение об ошибке.
### 3. Помощь
```bash
python main.py --help
```
Выводит краткое описание доступных команд.
## Пример использования
```text
$ python main.py classic
Добро пожаловать в игру «Память»!
Введите 'y' для начала, 'q' чтобы выйти: y
Секвенция:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Ваша задача — воспроизвести эту последовательность.
Введите строку (разделяйте символы пробелом):
```
Если пользователь вводит правильную последовательность, выводится:
```text
✅ Поздравляем! Вы успешно запомнили всю последовательность!
```
При ошибке в режиме подтверждения:
```text
❌ Ошибка: ожидается 'C', но получено 'D'.
Попробуйте ещё раз.
```
## Как добавить новые режимы
1. Создайте новый файл `game_modes/<mode_name>.py`.
2. Реализуйте класс `GameMode` с методами:
- `start(self)`: запускает игру
- `process_input(self, user_input: str) -> bool`: обрабатывает ввод и возвращает `True`, если игра продолжается.
3. Зарегистрируйте новый режим в `main.py`.
## Тесты
Для проверки корректности работы можно использовать модульные тесты (если добавлены). Запуск:
```bash
pytest tests/
``` ```
--- ---
Если возникли вопросы, обращайтесь к авторам проекта или открывайте issue на GitHub. ## Запуск программы
### 1. Через команду
```bash
python main.py
```
После запуска вы увидите меню:
```
=== Меню ===
1. Добавить строку
2. Показать все строки
3. Удалить строку
4. Выход
Выберите действие:
```
### 2. Пример использования
```text
> python main.py
=== Меню ===
1. Добавить строку
2. Показать все строки
3. Удалить строку
4. Выход
Выберите действие: 1
Введите строку для сохранения: Hello, world!
✅ Строка успешно добавлена.
=== Меню ===
...
```
#### Удаление
```text
> python main.py
... (выбираем пункт 3)
Введите номер строки для удаления: 2
Вы уверены, что хотите удалить строку "Пример"? [y/N]: y
✅ Строка удалена.
```
---
## Как это работает
- **`utils.load_data()`** читает `data.json`. Если файл отсутствует – создаётся пустой список.
- **`utils.save_data(data)`** сохраняет список в JSON‑файл с отступом 4 пробела.
- **`utils.confirm(prompt)`** выводит запрос через `rich.prompt.Prompt.ask`, ожидая ответа `y/n`.
---
## Тесты
Для проверки корректности работы можно запустить:
```bash
python -m unittest discover tests
```
(Если тестовые файлы находятся в каталоге `tests/`.)
---
## Лицензия
MIT © 2026.
---