Меню
Видеоучебник

Создание коллекции игр

Урок 15. Творческие задания в Sсratch 5-6 классы

Ученики уже научились создавать анимации движения для спрайтов, а также управляемые спрайты. Пора начать использовать это. Первое, что приходит на ум, когда мы говорим об управляемых спрайтах, – это игры. Ученики сделают свою первую игру в Scratch. Это игра об автомобиле, который должен пройти трассу от начала до конца.
Плеер: YouTube Вконтакте

Конспект урока "Создание коллекции игр"

Вопросы:

·     Управляемый спрайт.

·     Первая игра.

Ранее мы узнали о том, что такое ветвление, и о том, как эта конструкция описывается в скриптах Scratch. Также мы создали спрайт, который может принимать решение, исходя из окружающих обстоятельств. Однако это далеко не всё, что можно сделать с помощью сенсоров и ветвлений.

C помощью ветвления можно сделать спрайт, который будет выполнять команды пользователя, задаваемые с помощью мыши и клавиатуры прямо в процессе выполнения скрипта. Рассмотрим пример. Напишем небольшой скрипт, позволяющий пользователю рисовать курсором, как мелом на доске.

Для решения этой задачи мы можем использовать любой спрайт, в том числе и спрайт Царапки. Чуть позже вы поймёте, почему. Сперва подготовим сцену, чтобы она была похожа на школьную доску. Для этого просто зальём её фон чёрным цветом. Теперь составим скрипт для спрайта Царапки. Как обычно, чтобы его запустить, пользователь будет нажимать на зелёный флажок.

На самом деле рисовать будет не курсор мыши, а спрайт Царапки, хотя выглядеть должно всё так, как будто рисует курсор мыши. Чтобы так сделать, нужно сперва заставить Царапку перемещаться вместе с курсором. Для этого в скрипт Царапки добавим цикл «Всегда». Дальше перейдём в категорию «Движение» и найдём в ней блок «Перейти в...». Установим его внутрь цикла. Он позволяет перемещаться спрайту в некоторые точки сцены. Царапка будет перемещаться на позицию указателя мыши. Запустим скрипт на выполнение и убедимся, что Царапка перемещается по сцене вслед за указателем мыши.

Остановим скрипт и дополним его, чтобы Царапка мог рисовать. В начале выберем цвет, которым будем рисовать. Для этого перейдём в категорию «Перо» и найдём в ней блок «Установить цвет для пера». Установим его в наш скрипт перед циклом. Так как мел чаще всего белый, укажем белый цвет пера так, как это показано на экране. Теперь опишем рисование. Пусть Царапка рисует, когда нажата левая кнопка мыши. Значит, нужно проверить, нажата ли левая кнопка мыши. Для этого добавим в цикл блок «Если» для полной формы ветвления. В качестве условия добавим в блок сенсор «Мышка нажата». Теперь опишем действия спрайта, когда нажата левая кнопка мыши. В этом случае спрайт должен опустить перо, чтобы начать рисовать. Если же левая кнопка мыши не нажата, спрайт должен поднять перо, чтобы прекратить рисование. Запустим скрипт на выполнение. Теперь Царапка двигается по сцене вслед за курсором и, когда левая кнопка мыши нажата, Царапка оставляет за собой белую линию.

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

Всё же у нас осталось несколько проблем. Во-первых, мы не можем рисовать близко к краям сцены, а во-вторых, вместе с курсором двигается немаленький спрайт Царапки. Сначала разберёмся с первой проблемой. Мы не можем рисовать близко к краям сцены потому, что как только спрайт касается сцены, он останавливается, при этом рисует именно центр спрайта, который не достигает края сцены. Чтобы это исправить, нужно уменьшить размер спрайта. Для этого перейдём в категорию «Внешность» и найдём в ней уже знакомый нам блок «Установить размер». Установим его в начало нашего скрипта. Уменьшим размер спрайта до шести процентов от изначального. Теперь центр спрайта может быть значительно ближе к краю сцены. Теперь сделаем так, чтобы спрайта Царапки не было видно. Для этого добавим в начало скрипта блок «Спрятаться» из категории «Внешность». Теперь Царапки не будет видно.

Снова запустим скрипт на выполнение. Теперь спрайта Царапки не видно, рисовать мы можем в любом месте сцены, а нажав на «Пробел» мы можем в любой момент очистить сцену. Задача решена. Сохраним проект в рабочей папке под именем «Школьная доска».

Итак, мы поняли, что можно создавать управляемые спрайты. Что приходит на ум, когда мы говорим о том, что героями на экране можно управлять? Можно воспользоваться этим для создания игр.

Уберём спрайт Царапки со сцены и сделаем фон сцены снова белым. Загрузим новый спрайт из файла «Машина», находящегося в рабочей папке. На сцене появился автомобиль, точнее его вид сверху. Раз у нас есть такой спрайт, сделаем с ним игру. Сразу приходят на ум какие-нибудь гонки, но пока для нас это слишком сложно, мы сделаем что-то другое. Прежде чем решить, какую игру делать, подготовим наш спрайт. Наша машина слишком велика. С помощью блока «Установить размер» из категории «Внешность» уменьшим её размер до трёх процентов от изначального. Направление машины не соответствует направлению спрайта. Машина направлена вверх, а её спрайт – вправо. Изменим направление костюма так, чтобы оно совпадало с направлением спрайта.

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

Установим центр спрайта в обозначенной точке и приступим к описанию его скрипта. Запускаться скрипт будет при нажатии на зелёный флажок. Дальше добавим цикл «Всегда». Для начала опишем движение при нажатии стрелки вверх. Для этого добавим в цикл блок полной формы ветвления. В качестве условия используем сенсор «Клавиша нажата». С помощью выпадающего списка укажем в сенсоре клавишу «Стрелка вверх». Так как нажата стрелка вверх, машина должна двигаться вперёд. Добавим в ветвление блок «Идти». Пока количество шагов изменять не будем. Отрегулируем всё позже. Теперь добавим команды при нажатии боковых стрелок. Для этого добавим в скрипт блок для сокращённой формы ветвления. В качестве условия установим в блок сенсор «Клавиша нажата», в котором укажем клавишу «Стрелка направо».  Внутрь ветвления поместим блок «Повернуть по часовой стрелке на...» из категории «Движение». Градусную меру поворота отрегулируем позже. Такое же ветвление добавим для клавиши «Стрелка влево», в нём поворот будет против часовой стрелки.

Запустим скрипт и посмотрим, что у нас получилось. Попробуем управлять машиной с помощью стрелок. Машина двигается слишком быстро. Уменьшим скорость, для этого в блоке «Идти» сократим количество шагов до двух. Ещё попробуем управлять машиной. Теперь она двигается не так быстро, правда, очень круто поворачивает. Сделаем так, чтобы машина поворачивала не так круто, для этого в блоках поворотов сократим градусную меру до пяти градусов. Снова попробуем управлять машиной. Такое направление нас устроит.

Остановим скрипт и добавим управление при нажатой стрелке вниз. Для этого после слова «Иначе» добавим блок для сокращённой формы ветвления. В нём в качестве условия установим сенсор, определяющий нажатие стрелки вниз. Дальше продублируем то, что мы составили для движения вперед. И вставим в последнее ветвление. В блоке «Идти» изменим число шагов. Чтобы машина двигалась назад, установим его равным минус двум. Также поменяем направления поворотов при нажатии на боковые стрелки. Снова запустим скрипт и попробуем управлять машиной. Такое управление нас устраивает.

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

Итак, сперва нарисуем трассу. Для её рисования используем фон сцены. Пусть трасса будет серого цвета. Используем для рисования инструмент «Кисть». Подберём для неё подходящую ширину линии. Нарисуем трассу так, чтобы она не касалась краёв сцены. В конце трассы красным цветом с помощью кисти с меньшей шириной линии изобразим финишную линию.

Мы подготовили трассу. Теперь нужно установить автомобиль на старте так, чтобы он был повёрнут в нужном направлении. Для этого запустим скрипт. Управляя автомобилем, приведём его на старт и установим в нужном положении. После этого остановим скрипт. Добавим в скрипт команды для установки автомобиля на старт. Для этого откроем информацию о спрайте автомобиля. Обратим внимание на координаты автомобиля. В начале скрипта, перед циклом, добавим блок мгновенного перехода в эту точку. Также посмотрим на направление спрайта. Добавим после блока перехода блок поворота спрайта в этом направлении. Теперь в начале скрипта автомобиль будет помещён на старт.

Теперь добавим часть скрипта для случая, когда автомобиль пересёк границу трассы. Так как сцена за границами трассы белая, можно определить, что автомобиль пересёк границу трассы, если он коснулся белого цвета. Добавим в конец цикла блок для сокращённой формы ветвления. В нём в качестве условия используем сенсор «Касается цвета». Укажем в сенсоре белый цвет. Если так произойдёт, установим автомобиль на старт с помощью тех же команд, что и перед началом цикла.

Запустим скрипт на выполнение. Попробуем покататься по трассе. Как только автомобиль пересекает границу трассы, он оказывается в начале пути. Остановим скрипт и добавим в него команды для случая достижения финишной линии. Сделаем так, что если автомобиль дойдёт до финиша, то заиграет музыка, а затем автомобиль будет снова помещён на старт. Для этого добавим в конец цикла ещё один блок для сокращённой формы ветвления, который будет срабатывать, когда автомобиль коснётся красного цвета, то есть цвета финишной линии. На вкладке «Звуки» удалим уже имеющийся там звук и добавим из библиотеки звуков из категории «Музыкальная петля» весёлую музыку, например отрывок с названием «dance fanky». Прослушаем его. Чтобы отрывок воспроизводился на финише, добавим в последний блок ветвления из категории «Звук» блок «Играть звук “dance fanky” до конца» и для перемещения автомобиля на старт добавим те же команды, что перед циклом. Наш скрипт завершён. Запустим его на выполнение. Попробуем покататься по трассе. При пересечении границы трассы автомобиль перемещается в начало. Попробуем дойти до финиша. Если у вас это не получится, можно, не останавливая скрипт, перетащить автомобиль к финишной линии.  Играет музыкальный отрывок, и автомобиль перемещается в начало. Наша игра готова. Сохраним её в рабочей папке под именем «Автомобиль на дороге».

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

598

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт