Scenario
Scenario
Интерактивные ветвящиеся сценарии. Для обучения через выбор.
Использование
Сценарии определяются в YAML-файле рядом с контентом:
# content/concepts/my-concept/scenario.yaml
start: intro
nodes:
intro:
text: "Вы начинаете проект. Что делаете первым?"
choices:
- text: "Пишу код сразу"
next: bad_start
- text: "Планирую архитектуру"
next: good_start
good_start:
text: "Отличный выбор! Планирование — ключ к успеху."
ending: true
score: 100
bad_start:
text: "Без плана код быстро превращается в хаос."
ending: true
score: 30
И подключается в markdown:
{{< scenario file="scenario.yaml" >}}
Структура узла
| Поле | Тип | Описание |
|---|---|---|
text |
string | Текст узла (поддерживает Markdown) |
choices |
array | Варианты выбора |
ending |
boolean | Это конечный узел |
score |
number | Очки за достижение узла |
effects |
object | Изменение переменных |
condition |
string | Условие показа узла |
Формат выбора
choices:
- text: "Текст кнопки"
next: "id_следующего_узла"
effects:
karma: +10
condition: "karma > 0"
Переменные
variables:
karma: 50
money: 100
nodes:
shop:
text: "У вас ${{money}}. Купить инструмент за $50?"
choices:
- text: "Купить"
next: bought
condition: "money >= 50"
effects:
money: -50
События
Events.SCENARIO_START // Сценарий начался
Events.SCENARIO_CHOICE // Сделан выбор
Events.SCENARIO_NODE // Перешли на узел
Events.SCENARIO_END // Сценарий завершён
Интеграция с атомами
В узлах можно использовать атомы:
nodes:
quiz_node:
text: "Проверим знания:"
atom:
type: quiz-question
question: "Что такое REST?"
options:
- "Стиль архитектуры API"
- "База данных"
- "Язык программирования"
correct: 0
onCorrect: success
onWrong: retry