Примеры программ для среды программирования Scratch

Кот и слон

Кот и слон передвигаются по холсту. Когда они сталкиваются, то издают звуки, и кот отпыгивает от слона в противоположную сторону.

Скрипт кота:
"Отпрыгивание" реализовано с помощью двух команд - повернуть на 180 градусов и идти 100 шагов.

Скрипт слона:
Если поворот и ходьба будут находится в одном цикле, то объект будет поворачивать после каждой команды идти ... шагов. Это слишком часто и выглядит как метанье на почти одном месте.

Скрипт сцены:
Почему-то музыка проигрывается только один раз (тестировано в Ubuntu).

Столкновение

Задача

Организовать столкновение двух объектов (например, автомобилей), движущихся навстречу друг другу. Под столкновением понимать их остановку и изменение внешнего вида.

Особенности задачи

Когда машины сталкиваются, то у них изменяется только место столкновения (например, передняя часть). Если к объектам применять графические эффекты, то они изменят весь объект (от его центра), что нас не устраивает.

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

Алгоритм решения

  1. Для одной из машин (обоих ее частей) добавить команду повернуть в направлении -90, чтобы развернуть ее в противоположную сторону. Не забыть включить кнопку "только поворот влево-вправо".
  2. Для каждой части автомобилей добавить команду установить размер 70%.
  3. Расставить части машин в исходную позицию. Для каждой части добавить команду идти в x... y.... При этом будут уже указаны правильные значения.
  4. Для передних частей добавить код: повторять до <касается...> идти 3 шагов. Передняя часть одной машины двигается, пока не касается передней части другой машины.
  5. Когда переднии части машин касаются друг друга, то должны передать сигнал (например, стоп) своим задним частям, чтобы те остановились. Достаточно, чтобы только одна передняя часть сгенерировала этот сигнал.
  6. Графические эффекты к передним частям машин добавляются после цикла повторять до ....
  7. Создать общую переменную (например, едем_стоим). Установить ее значение в 1 для задних частей машин.
  8. К задним частям машин добавить цикл повторять до <едем_стоим = 0> идти 3 шагов.
  9. К задним частям добавить отдельный скрипт: Когда я получу <стоп> поставить <едем_стоим в 0>. Таким образом, заднии части будут двигаться пока значение переменной равно 1. При получении сигнала значение переменной меняется и автомобили останавливаются.

Итоговые скрипты объектов

Передняя часть первой машины:

Передняя часть второй машины:

Задняя часть первой машины:

Задняя часть второй машины:

Поиск минимума и максимума в списке из случайных чисел (среда программирования Scratch)

На холсте заполняется список чисел. Ищется минимум и максимум. При этом два объекта-"указателя" перемещаются по списку, показывая текущий минимум и максимум.

Посмотреть, как работает программа можно здесь: scratch.mit.edu/projects/25803446

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

Кроме того, поиск происходит достаточно быстро. Чтобы было время на анимированное движение указателей, в скрипт вставлена задержка в 1 секунду (указатели также перемещаются 1 секунду).

Алгоритм поиска минимума и максимума прост. Сначала переменным min и max присваивается значение первого элемента списка. Начиная со второго элементы списка по-очереди сравниваются с min и max. Если очередной элемент больше max или меньше min, то min или max перезаписываются на текущий элемент.

Вид списка и меток на холсте

Скрипт поиска минимума и максимума

Код указателя min

Код указателя max

Программа, рисующая график функции y=kx² (Scratch)

Программа состоит из двух скриптов - функции parabola и главного скрипта, откуда вызывается функция.

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

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

В подпрограмме рисуется парабола. Однако перед этим определяется, где будет первая точка. Максимальное значение y по модулю может быть 180 (иначе график не поместится на холсте). Ориентируясь от этого значения, следует найти первое значение x. Так как мы имеем дело с функцией y = kx2, то x = sqrt(y/k). Чтобы первый x был всегда положителен, делится на модуль k. Таким образом нашлась точка, откуда начнется черчение графика.

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

Далее спрайт перемещается в первую точку и в цикле рисуются маленькие отрезки от x до x_rev (значение y при этом каждый раз вычисляется).

Посмотреть, как программа работает, можно здесь: scratch.mit.edu/projects/25764356/