Scratch как театр
Текст урока посвящается Наталье Александровне Иванчевой, которая создала чудесную сказку про рыцарей и принцессу http://scratch.mit.edu/projects/electus/943526И все эти исполнители ролей управляются командами:
Мне очень близок и симпатичен подход, когда Scratch используется для создания цифровых историй и представлений.
Интереснее всего про этот подход пишет Бренда Лаурел, которая специально думала и делала компьютерные игры для девочек и, кажется мне, что у нее книга или статья на эту тему была - Компьютер как театр.
Главная идея этого урока, что создатель программы работает как режиссер спектакля. В Scrtatch эту метафору поддерживает так много элементов дизайна, что метафора театра здесь воспринимается естественно. Есть сцены, есть актеры, есть тексты пьесы. Собирать все это здесь в единый спектакль - одно удовольствие.
Текст пьесы
У нас есть текст пьесы и мы должны этот текст пьесы разбить на роли и раздать актерам. Каждый актер получает свою роль и свой текст. Этот текст своей роли он хранит в контейнере своего мозга. Мы не знаем как устроен контейнер и что там лежит. Мы говорим актеру - вот твой текст, помни его, будь готов весь этот текст проговорить. Если этот актер заболеет, то у нас должна быть возможность передать роль другому актеру.
Еще было бы здорово хранить и менять текст отдельно от актера. Например, если мы играем в России, то текст на русском. Поехали во Францию, просто поменяем текст и актеры будут произносить фразы на французском. Это чудесная возможность в обычном театре не доступна, но в компьютерном театре для нее нужно простое правило - хранить текст отдельно от формы его представления.
Правило № 1 - хранить текст отдельно от поведения.
- Где хранить?
- В списке. Зайти в раздел Переменные и Создать список. Про создание списка я писал в предыдущем уроке про презентации. Создали список - загрузили туда все фразы, которые говорит исполнитель.
Назвал криво. Надо было назвать исполнителя Рыцарь 2, а локальный список назвать текст. Получился бы список под названием Рыцарь 2 текст. -Yevgeny Patarakin 23.03.10 14:50
Это и с точки зрения постановщика спектакля сильно упрощает дело. Захотим мы проверить, знает ли исполнитель свою роль. Так мы его можем попросить - расскажи весь свой текст:
Если же мы захотим, чтобы актер последовательно проговорил все фразы, то мы добавим переменную и соберем такую конструкцию:
Про списки и их возможности и ограничения собрать отдельный урок. Здесь пока только правило хранения текстов. -Yevgeny Patarakin 23.03.10 16:06
В продолжение темы про использование списков и создание интерактивных диалогов со зрителями есть отдельный рассказ Положи значение переменной в мозг. С веселыми картинками:
Взаимодействие актеров
Подумаем о спрайтах как об актерах, которые участвуют в одном спектакле, и нам станет понятен весь ужас использования блока команды "Ждать". Представьте себе, что у актера роль, которая начинается во втором действии. И мы на полях его роли пишем
Ждать 600 секунд,
Показаться на сцене,
Сказать реплика 1 из текста
Ждать 5 секунд
Сказать реплика 1 из текста
И он, бедолага, сидит и учит свою роль с секундомером. А если что-то пойдет не так? Если свойства сцены изменились? Если партнер задержался или поспешил? Тогда все пойдет наперекосяк и весь наш спектакль развалится.
Что делать - использовать управляющие блоки "Передать" и "Когда я получу". Используем театрального суфлера или помощника, который подсказывает актерам, что им пора действовать. В принципе, каждый актер может помогать другому. Сказал свою реплику вслух и потом тихонечко, чтобы зрители не видели, прошептать партнеру - "А теперь твоя очередь, говори давай, Рыцарь Черного Лебедя". "Передать" - это как раз такие тайные сигналы, которыми обмениваются спрайты. Они не видны публики и служат для организации и синхронизации действий. Главное для организатора - развести сообщения для публики (Говорить, Думать) от сообщений для актеров.
В отличие от настоящей театральной сцены актеры компьютерные актеры на сцене Scrath не слышат, что говорят другие актеры. Все фразы Сказать и Думать видит только зритель. Для внутреннего использования необходимо использовать команду Передать.
В качестве примера - диалог Лопатина и Дуняши из первого действия пьесы "Вишневый сад". Перед началом пьесы дадим актерам тексты их ролей.
Создали список с текстом для Дуняши и экспортировали в этот список текст.
Тоже самое сделаем и для Лопахина. Теперь у артистов есть роли.
Роли разучены (тексты в голове). Теперь мы хотим, чтобы партнеры начали обмениваться репликами.
В сети этот пример http://scratch.mit.edu/projects/patarakin/945353
Задание
Создавая примеры, в которых персонажи обмениваются фразами, обходитесь без блока Ждать