Scratch It! (RU)

Простые графические программы, созданные с помощью популярного ресурса Scratch

Тема лабораторной

На этой короткой домашней практической вы будете работать с программой Scratch, популярном во многих других университетах в рамках курсов программирования для начинающих. Обе программы в этой лабораторной показаны в формате видео, приведённые ниже. Вы можете использовать их как решение первых двух задач Monkey, Bananas and Broccoli, и Hungry Dino. Благодаря этой лабораторной вы будете готовые к Problem Set 4.

Objectives

  • Ознакомиться со Scratch и научиться создавать в нём простые графические программы.
  • Использовать ветвления и циклы.
  • Освоить использование переменных.
  • Подготовиться к выполнению задания Problem Set-u 4, первого добровольного задания.

Postup

Step 1: Monkey, Bananas and Broccoli

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

Task 1.1

Выполняйте задание по видео (ссылка внизу).

Task 1.2

Создайте новый проект Scratch на странице: scratch.mit.edu > Create.

На переднем плане вы увидите так называемый sprite, а на заднем плане - белый экран (stage). Sprite собой представляет какой-то объект, который будет выполнять соответственные операции. Stage - это своего рода background, на котором выполняется вся программа.

Task 1.3

Добавьте в программу новый sprite - бананы с помощью библиотеки уже определённых объектов (Choose sprite from library).

Task 1.4

Подобным способом добавьте обезьяну.

Task 1.5

Если банан и обезьяну вы в библиотеке спрайтов найдёте, то брокколи, увы там нет, поэтому скачайте это изображение брокколи. Добавьте изображение в программу с помощью (Upload sprite from file).

Comment

Возможно, что изображение брокколи оказалось слишком большим. Чтобы исправить это, выберите брокколи и нажмите в верхнем меню Costumes и измените его размеры так, чтобы была одинакового (или чуть меньше) размера других объектов. Затем разместите её посередине холста.

Task 1.6

Удалите sprite кошки с помощью Shift+Click > Delete.
Этап после добавления нужных спрайтов
Obr. 1: Этап после добавления нужных спрайтов

Task 1.7

Главной фигурой вашей программы является обезьянка. Для того, чтобы запрограммировать её поведение, определите так называемый script. Для запуска скрипта добавьте зелёный флажок из меню Scripts > Events. When clicked

Task 1.8

Задача обезьяны - двигаться за курсором. Потому добавьте Go to mouse-pointer из меню Scripts > Motions. Go to

Task 1.9

Чтобы обезьяна преследовала курсор во время всей игры, а не только один раз, данное действие поместите в бесконечный цикл с помощью Scripts > Control > Forever. Forever

Task 1.10

Проверьте добавленный вами функционал нажав на зелёный флажок. Зелёный флажок

Comment

Для остановки выполнения программы нажмите на красный квадрат. Красный квадрат

Task 1.11

В скрипт добавьте условие, согласно которой если обезьянка дотронется бананов, на экран после 0.5 sec выпишется текст: You won! и игра закончится.

Для этого используйте:

  • Scripts > Control > if, then
  • Scripts > Sensing > touching
  • Scripts > Looks > say ... for ... secs
  • Scripts > Control > stop all

Task 1.12

Подобным способом, добавьте условие в скрипт, благодаря которому если обезьяна дотронется брокколи, после 0.5 sec выпишется текст: You lost! и игра закончится.
Скрипт для обезьяны
Obr. 2: Скрипт для обезьяны

Task 1.13

Протестируйте добавленный фунционал.

Task 1.14

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

Для этого используйте:

  • Scripts > Events > when clicked
  • Scripts > Control > forever
  • Scripts > Motion > turn ... degrees
  • Scripts > Operators > pick random -15 to 15
  • Scripts > Motion > move 4 steps
  • Scripts > Motion > if on edge, bounce
Скрипт для брокколи
Obr. 3: Скрипт для брокколи

Task 1.15

Протестируйте добавленный функционал, запустив программу с помощью зелёного флажка.

Comment

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

Task 1.16

Добавьте поведение для бананов: если обезьяна близко - пытаются её избежать, если нет - движение случайным образом.

Используйте следующее:

  • Scripts > Events > when clicked
  • Scripts > Control > forever
  • Scripts > Control > if, then, else
  • Scripts > Operators > ... < 50
  • Scripts > Motion > point towards Monkey
  • Scripts > Motion > move -10 steps
  • Scripts > Motion > if on edge, bounce

Comment

Для копирования случайного движения брокколи переместите группу инструкций в меню Sprites (слева внизу) на бананы.
Скрипт для бананов
Obr. 4: Скрипт для бананов

Task 1.17

Протестируйте вашу игру.

Step 2: Hungry Dino

В данной программе будет от динозавра убегать его добыча.

Task 2.1

Сперва опробуйте функционал проекта scratch.mit.edu/projects/12148550.

Comment

Управление динозавром с помощью стрелочек Left, Up, Right.

Task 2.2

Посмотрите содержимое проекта с помощью See inside.

Comment

Было бы хорошо, если на этом этапе вы бы пробежались по всем скриптам как динозавра, так и добычи.

Task 2.3

Можете делать всё по видео или по шагам, указанным ниже.

Task 2.4

В скрипт движения динозавра добавьте условие для открытия и закрытия пасти динозавра с помощью пробела (SPACEBAR). Скрипт протестируйте.

Используйте следующее:

  • Control > if, then
  • Sensing > key space pressed?
  • Looks > switch costume to dino-chomp
  • Control > wait 1 secs
  • Looks > switch costume to dino-hungry
Скрипт для динозавра - пасть
Obr. 5: Скрипт для динозавра - пасть

Task 2.5

Измените скрипт добычи так, чтобы она двигалась быстрее до самого конца экрана. Решение проверьте.

Используйте следующее:

  • Control > repeat until
  • Sensing > touching edge
  • Motion > move 50 steps

Task 2.6

Измените скрипт добычи так, чтобы постепенно перелетел экран. Решение проверьте.

Используйте следующее:

  • Motion > glide 1 secs to x: y:
  • Sensing > x position of bug
  • Operators > x position of bug + 70
  • Sensing > y position of bug
Скрипт для добычи - перелёт
Obr. 6: Скрипт для добычи - перелёт

Task 2.7

Измените скрипт для динозавра так, чтобы после нажатия пробела (spacebar) послал в программе так называемый broadcast с новым названием chomp. Измените скрипт для добычи так, чтобы после получения chomp исчез и через секунду появилась новая.

Используйте следующее:

  • Events > broadcast chomp
  • Events > when I receive chomp
  • Control > if, then
  • Sensing > touching Dino
  • Looks > hide
  • Control > wait 1 secs
  • Events > broadcast new bug1
Скрипт для динозавра - chomp
Obr. 7: Скрипт для динозавра - chomp
Скрипт для добычи - chomp
Obr. 8: Скрипт для добычи - chomp

Task 2.8

С помощью Scripts > Data добавьте в программу новую переменную score.

Task 2.9

Измените скрипт для добычи так, чтобы score переменная инкременировалась на 1 после получения chomp. Решение проверьте.

Для этого используйте:

  • Data > change score by 1
Скрипт для изменение score
Obr. 9: Скрипт для изменение score

Task 2.10

Измените программу так, чтобы при новом запуске программы переменная score обнулялась. Решение проверьте.

Используйте следующее:

  • Data > set score to 0

Comment

Нужно изменить скрипт для целой игры, т.е. Stage.
Скрипт для анулирование
Obr. 10: Скрипт для анулирование

Step 3: Hungry Dino 2

Ознакомьтесь с функционалом проекта scratch.mit.edu/projects/12148585 и исправьте вашу программу так, чтобы работала примерно так же.

Step 4: Space Invaders

На данном этапе вы создадите стрелялку на основе Space Invaders.

Task 4.1

Добавьте новый sprite: Ракета.

После добавления Ракеты нужно:

  • Уменьшить её, расположить посередине
  • Добавить управления влево/вправо
  • Ограничить движение так, чтобы не ракета не выходила за край экрана
Скрипт для ракеты
Obr. 11: Скрипт для ракеты
Положение ракеты
Obr. 12: Положение ракеты

Task 4.2

Добавьте новый спрайт: Стрела.

После добавления стрелы будет нужно:

  • Уменьшить на 5x5 (возможно, изменить цвет), настроить середину и скрыть
  • Создать как клона
  • Добавить звуковой эффект, изменить Y (выше)
Скрипт для стрелы
Obr. 13: Скрипт для стрелы
Как скрыть стрелу
Obr. 14: Как скрыть стрелу

Task 4.3

Измените скрипт ракеты так, чтобы при нажатии пробела создавался новый клон стрелы.
Скрипт для ракеты - новый клон стрелы
Obr. 15: Скрипт для ракеты - новый клон стрелы

Task 4.4

Добавьте новый спрайт: Ufo.

После его добавления вам следует:

  • Приспособить размер (примерно 15x15), настроить середину и скрыть
  • Добавить клонирование на случайный x, y = 180 и показать
  • Добавить переменную gameover
  • Удалить клон, если его настигнет стрела

Comment

Можете использовать это изображение UFO.
Скрипт для UFO
Obr. 16: Скрипт для UFO

Task 4.5

Переменной gameover добавьте значение окончания игры, если игрок (Spaceship) проиграл.
Скрипт для gameover
Obr. 17: Скрипт для gameover

Task 4.6

Добавьте переменную score и time_to_win, настройте время и условие для выигрыша игрока (Spaceship).
Скрипт выигрыша
Obr. 18: Скрипт выигрыша

Task 4.7

Инициализируйте переменные и настройте background сцены (stage).

После добавления заднего плана нужно:

  • Инициализировать переменные и обнулить время
  • Послать всем сигнал
  • После сигнала посылать клоны UFO
Скрипт для backgroung - отправка сообщения
Obr. 19: Скрипт для backgroung - отправка сообщения
Скрипт для UFO - обработка сообщения
Obr. 20: Скрипт для UFO - обработка сообщения
Background
Obr. 21: Background

Comment

Вы можете использовать это изображения космоса.

Task 4.8

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

Для этого:

  • Обнулить время в начале игры (для Spaceship)
  • Стрела должна пропасть при попадании по UFO
  • UFO появляется не только пока игрок не проиграл, но и пока не сработал таймер.
Конечный скрипт для ракеты
Obr. 22: Конечный скрипт для ракеты
Конечный скрипт для стрелы
Obr. 23: Конечный скрипт для стрелы
Конечный скрипт для UFO
Obr. 24: Конечный скрипт для UFO

Step 5: Problem Set 4: Scratch

Теперь-то вы, можно сказать, готовы к выполнению первого добровольного Problem Set 4.

Additional Resources

  1. Scratch Wiki
  2. Scratch Help Page
  3. Scratch 2 Offline Editor
  4. Pikatchu
  5. Ivy's Hardest Game
  6. Space Invaders