Обсуждение:Хакатон/Сочиняем сказки

Материал из Letopisi.Ru — «Время вернуться домой»
Перейти к: навигация, поиск

Материалы, которые не удалось использовать

Содержание

Организуем переход персонажа из одного фона в другой

И тут у нас появляются Переменная - (background)

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

Collabok14 fon.png

Поскольку у нас Колобок путешественник, то мы хотим, чтобы он перемещался по лесу и мир вокруг него изменялся бы.

Вариант 1
Есть описание проекта, в котором персонаж переходит из одного фона в другой. См. Скретч-квест

Квест предполагает, что герой перемещается из одного пространство в другое. Число пространств или комнат может быть очень большим, но для примера мы построим мир из 5 связанных между собой комнат. Агент, которым мы управляем, реагирует на клавиши - повернуть в направлении (180) идти (1) шагов, вверх, вправо и влево. Scratch/Как передвигать спрайт клавишами.

А вот мир вокруг Колобка устроен сложнее, он должен помнить откуда идет Колобок и куда он должен попасть при соприкосновении с экраном.
Как только Колобок касается экрана, он посылает миру сигнал - передать [Change place v] В ответ на этот сигнал среда начинает анализировать положение (направление) кошки и фон, на котором она находится.
В зависимости от того, куда смотрит Колобок и из какой комнаты она пришел, программа предлагает колобку новые изображения

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

когда я получу [Изменить место v]
изменить [background v] на (1)
сменить фон на (background)
Вариант 2
У нас в студии уже есть готовый проект, в котором фон умеет реагировать на движение персонажа и если персонаж подходит к краю экрана, то фон меняется. См. проект Переход

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

Collabok15 fon.png



Организуем взаимодействие персонажей

У нас есть 2 персонажа. Например, Колобок и Медведь.

  • При встрече Медведь говорит "Колобок, колобок, я тебя съем ..."
  • А Колобок ему отвечает

Существует множество вариантов организовать взаимодействие персонажей.

Вариант 1 (выглядит как взаимодействие)
Сказка начинается и через 2 секунды Медведь говорит "Колобок, колобок, я тебя съем ..."
а через 3 секунды Колобок говорит "Не ешь меня, Медведь"

Выглядит так, как будто они взаимодействуют, хотя на самом деле взаимодействия нет

Вариант 2
  • если <касается цвета [#000000]?>, то - если медведя коснется колобок коснется какого-то определенного цвета
  • если <касается [sprite1 v]?>, то если касаюсь спрайта Колобка

В этом случае взаимодействие есть - медведь реагирует на присутствие колобка - тот его коснулся и медведь отвечает.

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



Collabok 20 generator.png

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

Collabok 21 generator.png

Правила форматирования и описания блоков представлены в статье 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]
конец
Персональные инструменты
Инструменты