ЗАНЯТИЕ 4. ЛИНЕЙНЫЙ АЛГОРИТМ.

ПЕРЕДАЧА СООБЩЕНИЙ

 Посмотрите видео  по теме Передача сообщений и повторите, создайте такой же проект «Кот и мяч»

ССЫЛКА

Работаем дальше.

В одном проекте может быть множество скриптов. Например, если есть два героя-спрайта, вероятно у каждого будет свой скрипт, своя маленькая программа. А весь проект – это большая общая программа, состоящая из множества мелких.

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

Параллельное выполнение  скриптов

Когда для каждого спрайта одного проекта вы добавляете свою конструкцию блоков, которая начинается с команды "когда флажок нажат", то как только игра запускается, оба героя начинают параллельно независимо друг от друга выполнять свои команды. Это пример одновременного выполнения скриптов.

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


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

Последовательное выполнение скриптов

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

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

Задание на проект. Пусть у нас будет два спрайта – кот и собака. Сначала кот ходит по сцене. И только когда он останавливается и исчезает, на сцене появляется собака и начинает ходить.

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

Создайте проект по образцу и посмотрите результат выполнения.

Теперь когда кот выполнит свою порцию шагов, с помощью блока "передать сообщение1" он пошлет сообщение, которое может перехватить любой объект программы. В данном случае сообщение будет ждать только собака, потому что только ей мы добавили команду "когда я получу сообщение1".

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

Команда "передать сообщение" и "когда я получу сообщение" могут передавать любое сообщение, а не только "сообщение1". В проекте могут циркулировать десятки различных сообщений, которые одни объекты посылают, а другие ждут.

Чтобы добавить новое сообщение, надо кликнуть по маленькому треугольнику в этих командах и в раскрывающемся списке выбрать "Новое сообщение".


После этого на экране появится диалоговое окно, куда вводится сообщение. Например, "кот вызывает собаку".

Когда сообщение создано, оно становится доступным через раскрывающийся список команд "передать …" и "когда я получу …", где вместо точек может стоять любое сообщение.

При этом надо понимать, что если, например, кот передает сообщение "кот вызывает собаку", то собака должна получать именно это сообщение, а не какое-либо другое. Иначе она не будет реагировать.

ЗАДАНИЕ НА НОВЫЙ  ПРОЕКТ:

Составьте проект  по следующему описанию:

1.    Кот недолго ходит по сцене, потом останавливается, но не исчезает.

2.    Появляется второй спрайт и тоже недолго ходит по сцене.

3.    Когда второй спрайт останавливается, кот снова начинает недолго ходить по сцене.

4.    Когда кот останавливается во второй раз, на сцене появляется третий недолго бегающий спрайт.

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


Комментарии

Популярные сообщения из этого блога

ЗАНЯТИЕ 1. РЕГИСТРАЦИЯ НА САЙТЕ SCRATCH.MIT.EDU

ЗАНЯТИЕ 2. Проект. Автомобиль с пятью скоростями.

ЗАНЯТИЕ 7. ЛИНЕЙНЫЙ АЛГОРИТМ.