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




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

Одновременное выполнение скриптов (программ)

Вспомните, как двигались три объекта на прошлом занятии. Они шли вместе, одновременно. Несмотря на то, что движение у каждого было свое (кот ходил слева направо в нижнем углу сцены, пес - слева направо в верхнем углу, а мышь просто крутилась на месте), они все равно начинали движение в одно и то же время — при нажатии на кнопку запуска. Это был пример, когда мы можем говорить об одновременном (параллельном) выполнении разных блоков команд (скриптов). В серьезном программировании используются другие, более умные слова (многопоточность и т.п.).

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

Но сначала давайте вспомним.

- Чтобы ракета полетела вверх, какую координату нужно изменить? Х илиY?

- Что произойдет с ракетой, если Y будет со знаком «минус»?

Пусть наша ракета совершает полет с Луны. Выберем фон и спрайт ракеты. Это мы уже хорошо умеем делать.

Зададим стартовое место ракете с помощью такого спрайта.

- Какая новая команда у нас появилась? Что она обозначает?

Теперь зададим ракете траекторию полета. Помним, что при движении вверх координата X неизменна, меняется только координата Y.

- Нужно ли тогда упоминать в программе про X?

- Какая новая команда у нас появилась?

- Что она обозначает?

Запустим теперь ракету. То есть выполним ПОСЛЕДОВАТЕЛЬНО действия: запуск при помощи нажатия на флажок, и второе действие выполняется при нажатии на клавишу «пробел». Мы увидели наглядно Последовательное выполнение действий одного объекта при использовании двух команд.

Сохраним нашу Ракету в копилку своих программ.

Теперь закрепим наши знания и запустим в полет самолет.

- По какой траектории летит самолет, когда наберет высоту: вверх как ракета или горизонтально?

- Какую координату мы будем менять, чтобы самолет летел горизонтально?

- 100 или минус 100 будет обозначать X при движении самолета вправо? А влево?

Итак выбираем фон и самолет, как мы уже умеем.

 

 

Задаем высоту самолету при помощи следующего спрайта.

И теперь программа полета.

- Какой командой задается полет самолета?

Полетаем самолетом, побороздим просторы нашего небосклона.

Сохраним программу Самолета в копилку.

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

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

При последовательном выполнении скриптов сначала все действия должен совершать один объект, затем второй и т.д. Как же это можно сделать в Scratch?

Например, можно просто использовать команду ждать в начале скрипта второго объекта. Но на самом деле это будет никакое не последовательное выполнение скриптов, т.к. оба они начнут работать одновременно, просто у второго объекта сначала будет долго работать команда ждать. Хотя на сцене можно таким образом получить желаемый эффект: сначала действия будет совершать один объект, а через некоторое время - другой.

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

Организуем для двух объектов последовательное выполнение скриптов. Допустим, по нашему сценарию планируется такая анимация: кот сначала ходит туда-сюда, после чего исчезает, и по экрану начинает метаться маленькое привидение.

Первый скрипт кота надо изменить на такой:

В команде передать... надо вставить сообщение. Для этого открывается специальное окно, куда можно его вписать. Команда спрятаться используется для того, чтобы скрыть кота, после того, как он пошлет сообщение. Команда показаться в начале скрипта требуется, чтобы снова отобразить объект, если он был спрятан до этого. Понятно, что при первом выполнении скрипта она не играет никакой роли. Цикл всегда был заменен на цикл повторить..., т.к. нам больше не надо, чтобы объект двигался всегда. Соберите такой скрипт.

Теперь посмотрим, что будет делать второй объект. Он должен получить сообщение, после чего совершить какие-нибудь действия:

Таким образом, второй скрипт не начнет выполняться, пока первый не передаст ему сообщение «первый вызывает второго». Обратите внимание, что команда спрятаться первого объекта находится ниже, чем передать.... Это значит, что у нас не совсем последовательное выполнение скриптов. Ведь первый еще не завершается, когда начинается второй. В принципе, чаще именно так и бывает. Добавьте на сцену второй объект и запрограммируйте его как показано выше. Помним, что нужно задать направление движению привидения.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: