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

3.1 KiB

Задача 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. Создайте объект поэмы и запустите титры.