Nodejs-разработка

Присоединяйтесь к нашей программе обучения

CLI текстовый квест

Необходимо создать консольное приложение, которое реализует простой текстовый квест. Пользователь будет взаимодействовать с игрой через текстовые команды в терминале.

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

1. Начало игры:

Пользователь запускает скрипт, после чего игра выводит вступительный текст с описанием начальной ситуации и списком действий.

2. Выбор действий:

На каждом этапе пользователю предлагается выбор из нескольких действий. Например:

  • Направо

  • Налево

  • Осмотреться

3. Реализация логики игры:

В зависимости от выбора пользователя, игра должна выводить различные текстовые описания и предоставлять новые выборы. Можно учесть несколько ветвлений сценария, чтобы пользователю было интересно исследовать разные пути.

4. Конец игры:

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

Требования

  • Код должен быть написан на TypeScript. Использовать фреймворки и внешние библиотеки не требуется. Разрешено использование только стандартных возможностей среды выполнения Node.js (например, для чтения/записи файлов, взаимодействия с консолью и выполнения скрипта). Основной упор сделайте на использование TypeScript для строгой типизации каждого этапа игры, чтобы структура оставалась понятной и легко поддерживалась.

  • Нужно использовать паттерн Model-View-Controller (MVC) и объектно-ориентированное программирование (ООП).

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

  • Состояние игры не должно содержать информацию о конкретных сценариях. Вместо этого, используйте отдельные объекты для каждого сценария. Это обеспечит лёгкость в добавлении новых сценариев без значительных изменений кода.

  • Новые сценарии должны добавляться без необходимости вносить изменения в основную логику игры. Структура кода должна позволять просто подключать новые элементы или ветки.

  • Задание не требует сохранения прогресса или взаимодействия с базами данных. Однако ваш код должен быть спроектирован так, чтобы в будущем можно было легко добавить эти функции.

  • Нужно протестировать логику игры.

  • Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.

Сценарий

К заданию прилагается сценарий игры "Таинственный лес". Можно полностью опираться на него или можно использовать его как пример для создания своего (небольшого) сценария.

Тестирование

Нужно написать юнит тесты, чтобы убедиться в правильности логики работы игры. Основной функционал, который нужно протестировать:

  • Игра должна корректно изменять своё состояние в зависимости от действий игрока.
    Пример: Проверьте, что при выборе действия "Направо" состояние игры меняется с "Начало" на "Поворот направо".

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

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

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

Сценарий "Таинственный лес"

Начало:

Вы просыпаетесь в центре густого леса, окруженного туманом. Единственный звук, который вы слышите, — это ветер, шелестящий в листве деревьев. Перед вами две тропинки. Одна ведет направо, другая — налево.

Подсказки и ресурсы

Для написания проекта могут понадобится следующие теоретические знания:

1. Паттерн MVC (Model-View-Controller):

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

2. Паттерн State (Состояние):

Игра управляется состоянием, которое хранит текущий шаг и сценарий. В зависимости от выбора действия игроком состояние игры изменяется, и это влияет на последующие действия.

3. Паттерн Command (Команда):

Каждое действие игрока в виде объектов можно рассматривать как реализацию паттерна Command. Эти действия представляют команды, которые игрок выполняет, и они инкапсулируют логику выполнения (например, переход на следующий шаг).

менеджер программы обучения

По любым вопросам по программе обучения пишите Светлане в Telegram