Практическое задание №3: Память и подтверждение действий: README.md
This commit is contained in:
+77
-56
@@ -1,91 +1,112 @@
|
|||||||
# Практическое задание №3: Память и подтверждение действий
|
# Практическое задание №3: Память и подтверждение действий
|
||||||
|
|
||||||
## Описание
|
## Описание
|
||||||
В этом проекте реализована простая консольная утилита, которая демонстрирует работу с памятью (сохраняет введённые пользователем данные) и подтверждением действий. Для улучшения визуального оформления используется библиотека **rich**.
|
В этом проекте реализована простая консольная игра «Память».
|
||||||
|
Игра состоит из двух режимов:
|
||||||
|
|
||||||
Основные возможности:
|
1. **Классический** – игроку показывается последовательность случайных символов, после чего он должен её воспроизвести.
|
||||||
- Ввод данных пользователем.
|
2. **С подтверждением действий** – каждый ввод пользователя проверяется и при ошибке выводится сообщение об ошибке.
|
||||||
- Сохранение введённых значений в памяти программы.
|
|
||||||
- Запрос подтверждения перед выполнением критических операций.
|
|
||||||
- Красивый вывод сообщений, ошибок и таблиц с помощью `rich`.
|
|
||||||
|
|
||||||
## Установка зависимостей
|
Для улучшения визуального восприятия использована библиотека `rich`, которая позволяет красиво форматировать текст в терминале (цвета, таблицы, индикаторы прогресса).
|
||||||
|
|
||||||
|
## Структура проекта
|
||||||
|
```
|
||||||
|
memory_game/
|
||||||
|
├── main.py # точка входа – запускает игру
|
||||||
|
├── game.py # логика игры и вспомогательные функции
|
||||||
|
└── requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Установка зависимостей
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Создайте виртуальное окружение (необязательно)
|
# Клонируйте репозиторий (если ещё не сделали это)
|
||||||
python -m venv .venv
|
git clone https://github.com/your-username/memory_game.git
|
||||||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
cd memory_game
|
||||||
|
|
||||||
# Установите зависимости из requirements.txt
|
# Создайте виртуальное окружение (рекомендуется)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
|
||||||
|
|
||||||
|
# Установите зависимости из файла 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
|
||||||
```
|
```
|
||||||
|
|
||||||
## Запуск проекта
|
## Запуск программы
|
||||||
|
|
||||||
У вас есть два основных скрипта, которые можно запускать отдельно.
|
### 1. Классический режим
|
||||||
|
|
||||||
### 1. `memory_confirm.py`
|
|
||||||
Главный скрипт, демонстрирующий работу памяти и подтверждения.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python memory_confirm.py
|
python main.py classic
|
||||||
```
|
```
|
||||||
|
|
||||||
Пример работы:
|
Игра начнётся с простого режима «памяти». В терминале будет показана последовательность символов, затем вы будете приглашены ввести её.
|
||||||
|
|
||||||
```
|
### 2. Режим подтверждения действий
|
||||||
Введите имя: Alice
|
|
||||||
Вы ввели: Alice
|
```bash
|
||||||
Хотите сохранить это значение? (y/n): y
|
python main.py confirm
|
||||||
Значение сохранено.
|
|
||||||
Текущая память:
|
|
||||||
┌─────┬───────────┐
|
|
||||||
│ № │ Значение │
|
|
||||||
├─────┼───────────┤
|
|
||||||
│ 1 │ Alice │
|
|
||||||
└─────┴───────────┘
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. `utils.py`
|
В этом режиме после каждого ввода проверяется правильность и при ошибке выводится красное сообщение об ошибке.
|
||||||
Модуль с вспомогательными функциями (не запускается напрямую, но используется в `memory_confirm.py`).
|
|
||||||
|
### 3. Помощь
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py --help
|
||||||
|
```
|
||||||
|
|
||||||
|
Выводит краткое описание доступных команд.
|
||||||
|
|
||||||
## Пример использования
|
## Пример использования
|
||||||
|
|
||||||
```python
|
```text
|
||||||
from utils import confirm_action, display_memory
|
$ python main.py classic
|
||||||
|
Добро пожаловать в игру «Память»!
|
||||||
|
Введите 'y' для начала, 'q' чтобы выйти: y
|
||||||
|
|
||||||
# Сохраняем данные
|
Секвенция:
|
||||||
data = "Привет мир"
|
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
|
||||||
|
|
||||||
# Запрашиваем подтверждение перед сохранением
|
Ваша задача — воспроизвести эту последовательность.
|
||||||
if confirm_action(f"Сохранить '{data}'?"):
|
Введите строку (разделяйте символы пробелом):
|
||||||
memory.append(data)
|
|
||||||
print("Данные сохранены.")
|
|
||||||
else:
|
|
||||||
print("Операция отменена.")
|
|
||||||
|
|
||||||
# Показать содержимое памяти
|
|
||||||
display_memory(memory)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Важно**: В примере выше переменная `memory` должна быть объявлена как список в глобальной области видимости скрипта.
|
Если пользователь вводит правильную последовательность, выводится:
|
||||||
|
|
||||||
## Структура проекта
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
.
|
✅ Поздравляем! Вы успешно запомнили всю последовательность!
|
||||||
├── memory_confirm.py # Основной исполняемый файл
|
```
|
||||||
├── utils.py # Модуль вспомогательных функций
|
|
||||||
├── requirements.txt # Список зависимостей
|
При ошибке в режиме подтверждения:
|
||||||
└── README.md # Это руководство
|
|
||||||
|
```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/
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Если возникнут вопросы, обращайтесь в раздел Issues проекта. Happy coding!
|
Если возникли вопросы, обращайтесь к авторам проекта или открывайте issue на GitHub.
|
||||||
Reference in New Issue
Block a user