{
  "format": "rubrick-lesson",
  "formatVersion": 1,
  "exportedAt": "2026-11-06T20:21:16.656Z",
  "source": {
    "lessonId": "00000000-0000-4000-8001-a590183944f9",
    "courseId": "00000000-0000-4000-8000-b95677216e43",
    "courseTitle": "Робот слышит и говорит",
    "ordering": 4,
    "updatedAt": "2026-09-27T10:47:17.862162+00:00"
  },
  "lessonTask": null,
  "lessonTaskSchemaVersion": null,
  "lesson": {
    "schemaVersion": 3,
    "id": "voice-04-dialog",
    "courseId": "voice",
    "order": 4,
    "title": "Разговор",
    "summary": "Робот задаёт вопрос и по-разному отвечает на «да» и «нет»",
    "duration": 30,
    "mode": "blocks",
    "attachments": [],
    "sections": [
      {
        "kind": "intro",
        "body": "Робот задаёт вопрос и по-разному отвечает на «да» и «нет»\n\n### Чему научишься\n- Собрать простой диалог\n- Разветвить программу по ответу\n- Предусмотреть молчание собеседника\n\n### Новое\n- Разговор — это чередование: сказать, послушать, ответить\n- Одно и то же услышанное можно сравнить с несколькими вариантами\n- Робот должен что-то делать и тогда, когда ответа нет вовсе",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "task",
        "body": "Сделай, чтобы робот спросил «Поедем?» и повёл себя по-разному: на «да» — поехал, на «нет» — загрустил.\n\n### Результат\n- Робот задаёт вопрос вслух\n- Ответы «да» и «нет» ведут к разному поведению\n- Молчание тоже обработано",
        "attachments": [],
        "steps": [
          {
            "id": "s1",
            "title": "Спроси",
            "body": "Робот произносит вопрос.",
            "attachments": []
          },
          {
            "id": "s2",
            "title": "Дождись ответа",
            "body": "Жди, пока услышанное не станет не пустым, но не бесконечно.",
            "attachments": []
          },
          {
            "id": "s3",
            "title": "Разветви",
            "body": "На «да» — движение, на «нет» — грустное лицо.",
            "attachments": []
          },
          {
            "id": "s4",
            "title": "Молчание",
            "body": "Если за отведённое время ничего не сказали — робот переспрашивает.",
            "attachments": []
          }
        ],
        "hints": [
          "Робот не дожидается ответа? Значит, он спросил и сразу пошёл дальше — поставь ожидание, пока услышанное не появится."
        ]
      },
      {
        "kind": "assembly",
        "body": "### Понадобится\n- Настоящий робот с двумя моторами\n\nБазовая платформа: левое колесо в D, правое в C.",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "connection",
        "body": "",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "example",
        "body": "### Что должно получиться\n- Нужен настоящий телефон",
        "attachments": [],
        "steps": [],
        "program": {
          "mode": "blocks",
          "python": "robot.configure_drive(wheel_diameter_mm=43.2, track_width_mm=120, left_motor=1, right_motor=2)\n\nrobot.say(\"Поедем?\")\n\nответ = None\nfor попытка in range(50):      # примерно десять секунд ожидания\n    ответ = robot.heard()\n    if ответ is not None:\n        break\n    robot.wait(0.2)\n\nif ответ is None:\n    robot.say(\"Я не расслышал\")\nelse:\n    слова = ответ.lower().split()   # по словам, а не по буквам: в «до свидания» тоже есть «да»\n    # «нет» важнее: «нет, не надо» робот слышит как «нет нет да» — и не должен поехать\n    if \"да\" in слова and \"нет\" not in слова:\n        robot.face(\"happy\")\n        robot.forward_cm(20)\n        robot.stop()\n    else:\n        robot.face(\"sad\")\n        robot.say(\"Ну ладно\")\n"
        }
      },
      {
        "kind": "next",
        "body": "",
        "attachments": [],
        "steps": []
      }
    ],
    "category": "Голос",
    "colour": "#FFF200"
  }
}