что такое скрипт в скретч
Что такое скрипт в скретч
Шпынева Светлана Михайловна, учитель информатики МАОУ «Центр Образования №13 имени Героя Советского Союза Н.А. Кузнецова» г.Тамбова
Задание 1: Составить скрипт из одной команды блока ДВИЖЕНИЕ, запустить, присоединить стартовую команду, вставить команды блока ВНЕШНОСТЬ, с помощью интерактивного меню дублировать, удалять, группы команд, по одной команде; установить пошаговое выполнение команд; удалить команды перетаскиванием в область команд, использовать верхнее меню для отмены удаления; пронаблюдать процесс неоднократного повторения выполнения скрипта. Сделать выводы относительно работы с группой команд скрипта и одной командой, работы команд «сказать…» и «говорить…», относительно изменения цвета и повтора действий для нескольких цветовых переходов – можно ли освободить себя от многократного повторения запуска скрипта, но при этом повторять изменение цвета объекта.
Ход работы 1:
1) ДЩЛКМ по ярлыку Scratch на Рабочем столе запустить среду Scratch.
2) Для каждого нового объекта по умолчанию активен блок ДВИЖЕНИЕ (высвечивается синим цветом вся его кнопка, и загружены команды этого блока).
Зажмем левой кнопкой мышки (ЛКМ) первую команду «иди 10 шагов» и перетащим ее в область закладок в закладку СКРИПТЫ (она так же активна по умолчанию).
4) Элементарная программка готова.
5) Запустим ее двойным ЩЛКМ (ДЩЛКМ) по ней – Кот продвинулся вперед к правому краю экрана.
6) В верхнем меню в пункте «Редактировать» выберем «начать пошаговое выполнение».
7) Еще раз запускаем программу ДЩЛКМ по команде. Теперь в процессе ее выполнения она подсвечивается белым контуром:
8) Рассмотренным способом запуска программ невозможно запустить скрипты сразу нескольких объектов или запустить просмотр действия даже этой одной команды в режиме презентации.
9) Поэтому начинают скрипт стартовой командой: блока КОНТРОЛЬ.
10) ЩЛКМ по блоку КОНТРОЛЬ. Из области его команд перетащим в закладку СКРИПТЫ эту команду, присоединив к верхней части команды «иди 10 шагов»:
11) ЩЛКМ по блоку ВНЕШНОСТЬ и из области его команд перетащим в закладку СКРИПТЫ команду «сказать: ‘Привет!’» (можно этот текст заменить на любой другой), присоединив к нижней части команды «иди 10 шагов»:
При перемещении команды в область скриптов появляется белая полоса, подсказывающая, куда прилепится команда, если ее отпустить.
12) Так же присоединим команду «изменить цвет … »:
13) Запускаем – видим на экране изменившего цвет Кота, говорящего «Привет!»:
14) Чтобы перетаскивать не одну, а сразу группу команд, «ухватываемся» за верхнюю команду этой группы и перетаскиваем (например, «разрываем» скрипт).
15) ЩПКМ по верхней части этой группы команд выдает интерактивное меню: помощь, дублировать, удалить.
ЩПКМ в нижней части этой группы команд выдает интерактивное меню: помощь, дублировать.
16) Если в верхнем меню в пункте «Редактировать» выбрать «установить единичный шаг…» и в следующем открывающемся окне СКОРОСТЬ ШАГА выбрать «Мигание блоков (медленно)»:
, то при выполнении программы вместе с белой подсветкой всех команд мы успеем (т.к. выбрали медленный режим) пронаблюдать выделение (ярким желтым цветом) выполняемой (текущей) команды одновременно с происходящими на экране действиями:
17) Ухватимся за верхнюю часть группы и присоединим ее обратно к стартовой команде.
18) Дублируем скрипт.
ЩПКМ по верхней части скрипта и выбираем «дублировать»:
, а затем удаляем дубль перетаскиванием его в область команд, зажав ЛКМ так же за верх.
19) ЩПКМ по последней команде дублируем только одну эту команду:
20) А теперь ее удаляем, зажав ЛКМ и перетащив в область команд:
21) Чтобы удалить средние команды группы или последнюю, надо «разорвать» (движением вниз) эту группу, оставив отдельно удаляемые команды, и удалить их с помощью интерактивного меню в верхней части или перетаскиванием их в область команд, не зависимо от того, какой блок команд открыт.
22) Для отмены удаления в верхнем меню в пункте Редактировать выбираем «Отменить удаление» и сразу на курсор «прикрепляются» удаленные команды:
23) Присоединяем их к стартовой команде:
24) Удаляем «изменить цвет»:
25) Отменяем удаление.
26) Присоединяем возвращенную команду к стартовой команде:
27) Изучаем пошаговое выполнение.
Запускаем программу. Теперь наш Кот не перемещается, а только при каждом запуске программы меняет цвет на новый:
28) Перетаскиваем и присоединяем команду «говорить: «Привет!» 2 секунды».
29) Запускаем программу.
30) Работает команда изменить цвет:
Команда выполняется на экране действий сразу при переходе указателя пошагового выполнения команд. Если команда «потухла», значит она выполнена (выполнено действие на экране действий).
31) «Потухла» команда «изменить цвет …» – Кот сменил цвет на экране действий (а также на ярлыках в области меню объектов проекта и в области закладок (см. на рис. п.32), а указатель перешел к следующей команде).
32) Указатель на команде «говорить «Привет!» 2 секунд». Надпись сказанного «висит» на экране заданное время и лишь затем исчезает.
33) Отработала команда «говорить …» – исчезла надпись с экрана. Программа (скрипт) выполнена, т.к. закончились все команды. Текущее состояние экрана:
34) Запустим ещё раз скрипт и пронаблюдаем всё ещё раз поэтапно:
37) Программа выполнена:
38) Запустим ещё раз:
Сделаем выводы:
Задание 2: Создать анимацию, в которой Кот сначала грустный, потом делает шаг и улыбается, распушившись, а сделав еще шаг, возвращается к прежнему настроению (в исходное состояние).
Ход работы 2:
1) Войти в закладку «Костюмы». У Кота два костюма. Перейти к Костюму2 и нажать на кнопку Копировать.
2) В Костюме3 нажать Редактировать и в появившемся окне встроенного графического редактора изменить внешность, залив глаза розовым градиентом, нарисовать улыбку, усы, щетину.
3) Для дальнейшего использования этого объекта в других проектах экспортировать Костюм 3 в библиотеку картинок среды. Нажать ПКМ по значку отредактированного Костюма 3 и выбрать «Экспортировать этот костюм» и ЩЛКМ.
4) В появившемся окне выбрать папку Animals и вписать в окно Новое имя файла cat1-c:
5) Составим скрипт, анимирующий объект с помощью смены его костюмов в соответствии с условием задания. Костюм1– исходная позиция шагов анимации, значит чтобы перейти к Костюму2 надо вставить команду «следующий костюм», к Костюму3 – еще раз вставить эту команду, ну и еще одна такая команда вернет объект в исходное положение, т.е. к Костюму1. Таким образом, мы должны соединить в скрипт 3 команды «следующий костюм».
6) Запустим скрипт на выполнение.
Смена костюмов происходит очень быстро – неуловимо для человеческого глаза.
Что мы делаем, если не успеваем рассмотреть действия на видео при ускоренной перемотке с выбранной скоростью?
(Уменьшаем скорость – задерживаем движение на заданное время.)
Сделаем выводы:
Нам нужна задержка времени после каждой команды смены костюма, чтобы глаз успел зафиксировать предыдущий костюм и появление нового. Такую задержку позволяет осуществить команда «ждать … секунд» блока КОНТРОЛЬ.
7) Перейдем к блоку КОНТРОЛЬ и вставим команду «ждать 0,5 секунд» (такое время выбрано, чтобы не было сильной заторможенности движений). Так как первый костюм (Костюм1) уже установлен, то скрипт начнется с команды «ждать…», а не со «смены костюма»:
Сколько раз и какие команды повторяются?
(У нас 3 раза повторяются две команды: «ждать 0,5секунд» и «следующий костюм».) Здесь так же нужны команды, позволяющие выполнять повтор действий
Сделаем вывод: Необходимы команды ПОВТОРА.
В данном случае известно количество повторов (три).
На следующем уроке мы познакомимся со всеми этими командами и исправим наш скрипт с их помощью. А сейчас:
8) Перейти в режим презентации и запустить выполнение проекта.
10) Сохраним проект под именем Улыбка в папку Мои проекты.
Дополнительно: Добавить команду блока ВНЕШНОСТЬ «говорить «Я умею ходить. », когда Кот улыбается, команду блока ДВИЖЕНИЕ «иди 5 шагов» после каждой смены костюма, чтобы объект шагал не на месте, и другие команды по своему усмотрению.
Scratch для «продвинутых»
Клонирование и переменные в Scratch
Моему ученику нравилась игра — «Зомби против растений». И ему было интересно самому запрограммировать её. Давайте вспомним как данная игра работает? С правой стороны у нас есть шеренга растений, которая расстреливает приближающихся зомби.
Есть множество решений данной задачи, но на мой взгляд более элегантное решение — задействовать минимально возможное количество спрайтов, т.е. использовать клонирование.
Как сделать так, чтобы у каждого отдельного клона был собственный уровень жизни? Что выбрать переменные или списки? Сделали попытку использовать списки, но после более детальной проработки поняли, что данная структура данных не помогает решить проблему. У переменных и списков, в Scratch есть 2 типа видимости для каждого типа данных — это «для всех спрайтов» или «только для этого спрайта». Пришлось проверять область видимости. Начали мы с переменных.
Дойдя до рабочего варианта переменной с областью видимостью «только для этого спрайта». В классических языках программирования такой тип видимости называют — локальным или приватным в зависимости от контекста.
Оказывается, что если эта переменная с данной областью видимости используется в клоне, то в клоне создается экземпляр переменной, принадлежащий конкретному клону и который используется для внутренних вычислений/работы клона. В нашем случае, у каждого клона есть своя «жизнь». Если стало интересно, то советую обратиться к справочнику. А вот картинка, которая показывает, как спрайты или клоны работают с переменными разных типов видимости.
Переменная с областью видимости «для всех спрайтов» (рисунок слева) — одна на всех. Кстати, здесь вы можете с детьми посмотреть работу с критическими секциями и что такое гонка за ресурс. А если область видимости переменной — «только для этого спрайта», то у спрайта и у его клонов появляется собственная переменная с тем же именем, с которой они работают (рисунок с права). И клоны не имеют доступа к переменной оригинала и переменной другого клона.
Это стало неожиданным и приятным открытием свойств Scratch для создания подобных алгоритмов.
ВАЖНО: Переменная — это очень мощный инструмент настоящего программиста, поэтому я сразу учу детей правильному именованию переменных, так как этот навык поможет им в проектах разной сложности.
Имена объектов как их идентификаторы
ВАЖНО: все переменные с зоной видимостью «только для этого спрайта».
Данный инструмент для меня стал совсем неожиданным. Давайте начнем с истории о том, как мы с учеником наткнулись на данную особенность языка. Мой ученик решил, создать игру с «искусственным интеллектом». Игра представляет звездные войны на космических кораблях и у игрока есть возможность управлять одним кораблем, в то время как противники гоняются за вами и за друг другом. Чтобы они могли преследовать вас или друг друга, им нужно как-то принимать решение о том, кого преследовать. Данную задачу можно решить в лоб и задать очередность преследования кораблей, но игра потеряет свою интеллектуальность и быстро наскучит. Поэтому ученик решил настроить интеллект таким образом, чтобы корабли с интеллектом преследовали ближайшего противника. Давайте посмотрим, как он начал решать данную задачу.
На мой взгляд хорошее решение для создания быстрого прототипа. Но какие ограничения здесь есть? Первое, усложнение кода по мере добавления новых кораблей. Следовательно, сложность кода повышается и не исключены мутации кода из-за усложнения. Время поиска ошибки и отладки алгоритма будет расти. И конечно, никто не отменял такую прикольную метрику, как старение кода (advance level SW Development). Что же делать? А делать необходимо следующее, нужно сделать обобщеный алгоритм, который будет динамично приспосабливаться к увеличению или уменьшению количества кораблей.
Для данного алгоритма нам и понадобиться свойство языка — имя как идентификатор объекта. Пришло время больших изменений и здесь вы, как учитель, можете рассказать про такое явление как рефакторинг. Это последовательное изменение кода, улучшение его структуры и его оптимизация. А главное, чтобы каждое изменение не ломало работу программы, и объем изменений тоже должен очень аккуратно подобран. Слишком много изменений — плохо, слишком мало — долго. Сформированный навык рефакторинга даст преимущество и эффективность работы программиста. Но для формирования навыка нужно работать головой, а не просто тыкаться. У меня получилось сделать 4 изменения в первоначальной программе и результат не изменился.
Заметьте, что я еще не удалил блоки, а оставил их. Зачем? Потому, что если что-то пойдет не так, мы можем вернуть предыдущий вариант, начав все заново. Но как только я проверю правильность выполнения обновленного скрипта, я сразу же их удалю, чтобы не отвлекаться на них в последующем.
Заметили? Сейчас в блоке «повернуться к …» стоит переменная и эта штука работает. Т.е. мы минимальными усилиями проверили, что данный подход работает. Это просто круто. Теперь мы можем начать писать алгоритмы, которые позволят определять объект преследования ближайшего корабля.
Что нам пригодится? Это из структур данных — это переменные и списки. Из алгоритмов — это нахождение минимального числа (расстояния) в списке. Еще нам необходим алгоритм, который определит имя объекта для преследования по минимальному расстоянию.
Сейчас будет написано много кода. Но для того, чтобы потом не захлебнуться и не запутаться в куче скриптов, нам необходимо использовать еще одну классную функцию, а именно создание собственных блоков. Эта функция очень мощная, но ее редко используют школьники, да и некоторые программисты, а ведь она позволяет создать понятный с первого прочтения алгоритм программы. Кстати, можете почитать про приемы создания понятного кода в книге Мартина Фаулера «Рефакторинг. Улучшение существующего кода»
Как и перед любым масштабным строительством нам необходимо все спланировать. Давайте спланируем в каком порядке будем разрабатывать блоки:
Для того, чтобы создать обобщенный алгоритм нам чем-то нужно пожертвовать, например, оригинальными именами спрайтов, придется их стандартизировать и получим следующий расклад.
И теперь мы готовы описать 1 часть программы. Все пишем для 1-ого корабля. Запускаем отдельно данный скрипт и смотрим результат. Поехали!
Если мы добавим новый корабль, нам нужно изменить в данном алгоритме лишь одну циферку. Клево? Клево!
Погнали дальше. А давайте научим его 2 алгоритму. Смотрим, что получилось. Это сразу конечный результат со вспомогательными функциями.
Ура! Работает. Проверить это можно следующим образом, должен быть обязательно 0 одним из значений в списке расстояний. Если у вас это не так, ищите ошибку.
Едем дальше! Поиск минимального расстояния. Заметили, что расстояние всегда положительно. И всегда будет минимальное число — 0. Ай-я-яй! Вывод — искать минимум, но не ноль. Можете попробовать свои силы и оптимизировать код самостоятельно, чтобы не делать расчет расстояния от корабля 1 до корабля 1 (это не опечатка).
Обучаем спрайт новой функции и получаем.
Не забываем проверять! Для этого можно даже остановить игру и запустить отдельный скрипт.
Мы написали все, что необходимо, теперь главное правильно использовать данные функции.
Если у вас все работает правильно, то вы должны увидеть следующее:
Заметили, что корабль с «искусственным интеллектом» разрывается между разными противниками. Вы можете усовершенствовать программу и усложнить принятие решения. Например, если у преследуемого корабля осталось мало жизни, то он добивает его, а если он нашел, ближе и с еще меньшим здоровьем, то добить сначала слабейшего.
Кстати, в данной программе можно уменьшить количество действий и усовершенствовать алгоритмы. Попробуйте свои силы. Взять данную программу можно здесь.
Подводим итоги
Вот на таких кейсах я узнал, как Scratch дает возможность ученикам быстрее освоить множество реальных техник программирования. На нем можно рассказывать про работу критических секций, про обобщенные алгоритмы, про переменные и их области видимости, про создание собственных блоков и структурирование кода. А также на данном языке можно рассказывать про профессиональные навыки, например, рефакторинг.
Это лишь малая часть инструментария программиста, но она являет очень важной. А в Scratch это объяснить становится чуточку легче.
Что такое скрипт в скретч
У меня хорошая новость для тех, кто не любит выстукивать на клавиатуре буковки!
Обычная программа — это текст. Но есть язык, в котором программа собирается из блоков, как собирается игрушка из кубиков Лего.
В командном режиме исполнитель получает команду, выполняет её и ждёт следующую. Чтобы задать команду на исполнение, нужно щёлкнуть на ней в СКИ.
В программном режиме исполнитель получает программу — последовательность команд и выполняет по порядку все команды в неё входящие.
Программы собираются из блоков в поле программы, и именно этот режим интересен для нас — программистов!
Для начала повторяйте за мной!
Сбросьте нижний блок назад в область СКИ (так из программы удаляется последняя команда), щёлкните на белом окошке в оставшейся команде (в нём появится мигающий текстовый курсор) и исправьте значение 10 на 20.
Щёлкаем, кот смещается на 20 шагов.
Посмотрите, над средой исполнителя расположены две кнопки: — зелёный флажок и красный восьмиугольник.
Теперь кот не будет ходить подобно мухе по потолку! Проверьте.
Сохраним работу на диске ( Файл/Сохранить как ) и продолжим.
Спрайты, костюмы, скрипты, звуки
А у нас в Роботландии предпочитают чай с сухариками!
Спрайт (англ. Sprite — фея; эльф) — графический объект в компьютерной графике. Спрайт может свободно перемещаться по экрану под управлением программы.
Если вы думаете, что исполнителем в среде Скретч может быть только фирменный кот, вы ошибаетесь!
Удалим кота и назначим исполнителем летучую мышь.
Удалить спрайт из среды можно разными способами.
Важно! При удалении спрайта программа, которая для него написана, тоже будет удалена.
Итак, кот удалён (вместе со своей программой). Выбрать новый спрайт можно разными способами:
Выбираем в библиотеке спрайтов в группе Животные изображение летучей мыши.
Задача 2 ( 2 кука ). Изобразить полёт летучей мыши.
Можно заставить спрайт мыши, как ранее спрайт кота, двигаться в среде, отталкиваться от краёв и поворачиваться в сторону движения.
Но такое движение далеко от реального! Почему? Кот, когда идёт, должен двигать лапками, а мышь — крыльями!
Вы, конечно, знаете, как устроены мультики — нам показывают друг за другом несколько фаз движения, глаз не успевает разглядеть их по отдельности, и рисунки сливаются в мультик.
Чтобы показать полёт, нужно иметь не одно, а несколько изображений, с разными положениями крыльев!
Скретч прекрасно понимает наши мультяшные желания, и в нём каждый спрайт может иметь несколько «костюмов»!
Теперь легко собрать код, отвечающий за смену костюмов.
Запись | Что означает |
---|---|
1 секунда | одна секунда |
0.1 секунды | одна десятая часть секунды |
0.2 секунды | две десятых частей секунды |
0.3 секунды | три десятых частей секунды |
0.4 секунды | четыре десятых частей секунды |
Получается, что программа полёта состоит из 2-х частей — части, отвечающей за передвижение и части, отвечающей за смену костюмов. Эти части собраны под двумя отдельными «шапочками»:
Задача 3 ( 1 кук ). Добавить в мультик бегемота на водопое.
Посмотрите: водопой бегемота правдоподобнее полёта мыши! Почему так? Спрайт бегемота имеет больше костюмов! Качество мультика повышается, когда предусмотрено больше фаз движения. «>.
А можно ли добавить ещё одного исполнителя в среду? Да!
Скретч допускает сколько угодно исполнителей-спрайтов в среде, и для каждого спрайта записывается собственная программа работы.
Заметим, что загрузить все 5 костюмов можно, как обычно при работе с файлами, за один раз, выделяя нужные картинки.
Если загрузить анимированный gif в качестве спрайта, он автоматически будет разделён на составляющие картинки-костюмы.
Часть программы полёта мыши, отвечающая за смену костюмов, вполне подойдёт и для бегемота. Копируем её:
Проверяем, выполнилось ли копирование:
Запускаем мультик, нажимая зелёный флажок.
Мышь летит, бегемот пьёт. Красота! У вас получилось?
Задача 4 ( 1 кук ). Пусть дополнительно мышь и бегемот, когда на них щёлкают, издают звуки.
Сначала займёмся мышью.
Дополним программу мыши ещё одним фрагментом:
Мы уже видели, что программа спрайта может состоять не из одного, а нескольких фрагментов.
Первые два фрагмента начинают работать после щелчка на зелёном флажке ( ), третий — после щелчка на спрайте в среде.
Script (скрипт) в переводе с английского означает сценарий. Хорошая замена словосочетанию «фрагмент программы»!
Остаётся загрузить для бегемота другой звук, например, wah beatbox и установить его в команде:
Сохраним работу на диске ( Файл/Сохранить как ).
Освоить любой предмет без практики невозможно. Освоить без практики программирование — просто немыслимо. Поэтому Кукарача настоятельно рекомендует выполнять задания, собранные в учебнике на специальных страницах Проекты.
Кроме того, в описания проектов будут выноситься важные технические подробности, без знакомства с которыми невозможно получить качественную программу.
— Ребята! В проектах учебника важны не только условия. Не пропустите важные моменты! Они могут быть.
Самое важное про Скретч :
№ | Что узнали |
---|---|
1 | Исполнителем может быть любой рисунок, свободно перемещаемый по среде. Cобытие задаётся в первом блоке скрипта (блок-шапочка). |
7 | Два события являются особенными: нажатие на зелёный флажок и нажатие на красный восьмиугольник. Флажок считается командой запуска всего проекта (кроме того, флажок останавливает все скрипты проекта, если они работали до момента его нажатия).
|