Обсуждение:Хакатон/Сочиняем сказки
Материалы, которые не удалось использовать
Содержание |
Организуем переход персонажа из одного фона в другой
И тут у нас появляются Переменная - (background)
Изначально герои появляются у нас на белом фоне, но мы можем фоны добавлять. Делается это точно так же как и добавление спрайтов, только находимся мы на спрайте с именем Сцена:
Поскольку у нас Колобок путешественник, то мы хотим, чтобы он перемещался по лесу и мир вокруг него изменялся бы.
- Вариант 1
- Есть описание проекта, в котором персонаж переходит из одного фона в другой. См. Скретч-квест
Квест предполагает, что герой перемещается из одного пространство в другое. Число пространств или комнат может быть очень большим, но для примера мы построим мир из 5 связанных между собой комнат. Агент, которым мы управляем, реагирует на клавиши - повернуть в направлении (180)
идти (1) шагов
, вверх, вправо и влево. Scratch/Как передвигать спрайт клавишами.
А вот мир вокруг Колобка устроен сложнее, он должен помнить откуда идет Колобок и куда он должен попасть при соприкосновении с экраном.
Как только Колобок касается экрана, он посылает миру сигнал - передать [Change place v]
В ответ на этот сигнал среда начинает анализировать положение (направление) кошки и фон, на котором она находится.
В зависимости от того, куда смотрит Колобок и из какой комнаты она пришел, программа предлагает колобку новые изображения
Максимально упрощенный вариант, когда колобок смотрит и двигается в только в одном направлении и не планируется, что он будет возвращаться назад
когда я получу [Изменить место v] изменить [background v] на (1) сменить фон на (background)
- Вариант 2
- У нас в студии уже есть готовый проект, в котором фон умеет реагировать на движение персонажа и если персонаж подходит к краю экрана, то фон меняется. См. проект Переход
Мы можем утащить в свой рюкзак меняющийся фон почти так же как утаскивали до этого нужные спрайты. Мы не можем утащить сам фон, да он нам и не нужен, но мы может положить в свой рюкзак управляющий скрипт и переменные, которые в этом скрипте использовались
Организуем взаимодействие персонажей
У нас есть 2 персонажа. Например, Колобок и Медведь.
- При встрече Медведь говорит "Колобок, колобок, я тебя съем ..."
- А Колобок ему отвечает
Существует множество вариантов организовать взаимодействие персонажей.
- Вариант 1 (выглядит как взаимодействие)
- Сказка начинается и через 2 секунды Медведь говорит "Колобок, колобок, я тебя съем ..."
- а через 3 секунды Колобок говорит "Не ешь меня, Медведь"
Выглядит так, как будто они взаимодействуют, хотя на самом деле взаимодействия нет
- Вариант 2
-
если <касается цвета [#000000]?>, то
- если медведя коснется колобок коснется какого-то определенного цвета -
если <касается [sprite1 v]?>, то
если касаюсь спрайта Колобка
В этом случае взаимодействие есть - медведь реагирует на присутствие колобка - тот его коснулся и медведь отвечает.
В данном проекте от взаимодействия персонажей пока отказались и пошли по более простому пути, когда сцена и спрайт звери ведут себя в зависимости от значения переменной.
После того, как проект был загружен, система предлагает для каждого спрайта выбрать визуальные блоки, которые вы хотите получить в виде текстового кода.
Правила форматирования и описания блоков представлены в статье ScratchBlockPlugin - как правильно форматировать блоки скретч кода на страницах.
Сцена
В сцене заложено несколько фонов, которые можно менять. Фоны пронумерованы.
когда щёлкнут по зелёному флагу сменить фон на [1 v] когда я получу [change place v] // Когда поступает сигнал о перемене места изменить [background v] на (1) // изменяем значение переменной сменить фон на (background) // подставляем фон, имя которого = значение переменной когда я получу [Колобок погибает! v] // После гибели колобка возвращаем сцену в начальное положение сменить фон на [1 v]
Управляемый персонаж (Колобок)
когда щёлкнут по зелёному флагу установить размер (100) % показаться перейти в x: (-180) y: (100) говорить [Я Колобок!] в течение (2) секунд задать [background v] значение (1) когда клавиша [стрелка вправо v] нажата повернуть в направлении (90 v) следующий костюм move (10) steps когда щёлкнут по зелёному флагу всегда NewRoom :: custom конец определить NewRoom если <touching [edge v] ?> , то передать [change place v] и ждать set x to ((0) - (x position)) идти(40) шагов конец когда я получу [Колобок погибает! v] перейти в x: (0) y: (0) say [Меня съела лиса!] for (2) secs go to [Звери v] повторить (10) change size by (-5) wait (0.1) secs конец спрятаться stop [all v]
Персонажи, которых встречает колобок
когда щёлкнут по зелёному флагу switch costume to [костюм1 v] когда я получу [change place v] // Получив сообщение, что колобок перешел в следующий фон следующий костюм //Агент надевает шкуру следующего зверя сказать (слить [Привет, колобок! ] и (слить (слить [Я, ] и (элемент ((background) + (1)) of [Звери v] :: list)) и [ я тебя съем])) если <(costume #) = [5]>, то говорить (слить [Привет, колобок! ] и (слить (слить [Я, ] и (элемент ((background) + (1)) of [Звери v] :: list)) и [ я тебя съем])) в течение (2) секунд передать [Колобок погибает! v] конец