Files
Igor 8623d967f0
CI Check / lint-and-check (push) Failing after 8s
add KR
2026-07-14 23:11:34 +03:00

46 lines
3.1 KiB
Markdown

### Задача 4. Поэма Края (ООП и работа с JSON)
> **Контекст лора:**
> Игрок проделал долгий путь, чтобы достичь конца игры. Теперь он видит слова на экране и слышит голоса из пустоты. Вселенная обращается к нему напрямую. В финале Поэма Края должна связать мысли игрока и послание вселенной воедино, прочитав сакральный текст из внешнего источника.
**Постановка**
* **Читатель поэмы:** Имеет имя файла и может читать текст поэмы из JSON-файла.
* **Игрок:** Имеет имя и может видеть слова на экране.
* **Вселенная:** Имеет имя и может произносить финальное послание.
* **Поэма Края:** Содержит читателя, игрока и вселенную; может воспроизводить титры, используя текст из JSON.
**Задание**
**Класс `PoemReader`:**
1. Импортируйте модуль `json`.
2. Создайте класс `PoemReader`.
3. Создайте метод `__init__(self, filename)`.
4. Создайте метод `read_poem(self)`, который открывает JSON-файл на чтение (с кодировкой `utf-8`), преобразует его содержимое в словарь и возвращает значение по ключу `"poem_text"`.
**Класс `Player`:**
1. Создайте класс `Player`.
2. Создайте метод `__init__(self, name)`.
3. Создайте метод `see_words(self)`, который выводит сообщение: *"[Имя] читает наши мысли так, словно это слова на экране."*
**Класс `Universe`:**
1. Создайте класс `Universe`.
2. Создайте метод `__init__(self)`, определяющий свойство `name` равным `"Вселенная"`.
3. Создайте метод `speak(self)`, выводящий фразу: *"И Вселенная говорит тебе: Я люблю тебя."*
**Класс `EndPoem`:**
1. Создайте класс `EndPoem`.
2. Создайте метод `__init__(self, reader, player, universe)`.
3. Создайте метод `play_credits(self)`, который: вызывает чтение текста из JSON, выводит его на экран, а затем вызывает методы игрока и вселенной.
**Тесты:**
1. Создайте файл `poem.json` рядом с вашим скриптом, поместив туда словарь с ключом `"poem_text"` и текстом поэмы.
2. Создайте объект читателя, передав ему имя файла.
3. Создайте объекты игрока и вселенной.
4. Создайте объект поэмы и запустите титры.