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

Датчики

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

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

Конспект урока "Датчики"

Вопросы:

·     Получение информации о спрайтах и фоне.

·     Вывод информации на экран.

·     Датчики в условиях.

В среде Scratch, у спрайта Царапки, на вкладке «Скрипты», в категории «Движение», обратим внимание на три нижних блока: «Положение x», «Положение y» и «Направление». По их форме видно, что это не блоки команд, а значит, они вставляются в другие блоки. Щёлкнем по первому блоку левой кнопкой мыши. Над ним появилась рамка с числом ноль. То же самое произойдёт, если щёлкнуть по второму блоку. Перенесём спрайт Царапки в другое место сцены. И снова щёлкнем по первым двум блокам. На этот раз числа в рамках изменились. На самом деле эти числа соответствуют координатам спрайта на сцене. В этом можно убедиться, открыв окно информации о спрайте. Щёлкнув по третьему блоку, можно узнать направление спрайта. По умолчанию он направлен вправо, что соответствует направлению 90 градусов. Если мы повернём спрайт, то показания блока изменятся.

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

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

Спрайт-информатор – это хорошо, но на практике так датчики используются редко. А где же чаще всего нам нужна информация о состоянии спрайтов и их окружения? Многие из вас наверняка поняли, что речь идёт об условиях ветвлений и циклов. Вы можете возразить, ведь пока большинство датчиков, которые мы рассмотрели, сообщают некоторые числа, а числа в условиях мы пока не использовали. Это правда.

Чтобы начать использовать числа в условиях, нам нужно рассмотреть ещё несколько блоков. Они находятся в категории «Операторы». Это блоки «<», «=» и «>». Они позволяют сравнить два числа между собой. Их форма такая же, как у условий. На самом деле это они и есть. Перетащим блок «Меньше» в рабочее поле спрайта. В его левой ячейке запишем число 2, а в правой – 4. Щёлкнем по блоку левой кнопкой мыши. Над ним в рамке появилось слово «true», что, как мы помним, означает «Истина». И действительно, 2 < 4. Если мы заменим в правой ячейке 4 на 1, то результат измениться – «false». Точно так же работают и оставшиеся два блока сравнения.

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

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

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

Если нужно произвести какие-то расчёты, прежде чем сравнивать числа, это можно также сделать с помощью блоков из категории «Операторы».

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

В игру вполне можно играть, но всё-таки в ней есть несколько проблем. Например, можно направить мяч от ворот – и игрок ударит через себя. Вратарь же может уйти далеко от ворот. Ограничим возможные направления мяча и область передвижения вратаря.

Начнём с передвижения вратаря. Перейдём к его спрайту. Мы помним, что его движениями можно управлять клавишами A и D. При нажатии на клавишу A вратарь двигается влево, при этом его координата x соответственно уменьшается. При нажатии на клавишу D координата x спрайта увеличивается. Выведем значение координаты x на экран. Определим её значения в левой и правой крайних точках ворот. Это координаты (-90; 90). Это значит, что при нажатии на клавишу A координата x будет уменьшаться, только если она больше -90. Усложним соответствующее условие. Достанем из блока сенсор нажатия на клавишу «Эй» и установим вместо него блок «И», в левую ячейку которого установим прежний сенсор. В правую ячейку блока «И» установим блок «>», в котором будем сравнивать положение Икс спрайта и число минус девяносто. Таким образом, футболист будет смещаться влево, если нажата клавиша A и положение x спрайта больше -90. Похожим образом изменим условие движения вратаря вправо. Только в нём в правой ячейке блока «И» установим блок «<» и будем сравнивать положение x спрайта с числом 90. Запустим игру и попробуем подвинуть вратаря влево и вправо. Теперь он не выходит за линию ворот.

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

Установим на место сенсора нажатия на стрелку влево блок «И», в его левую ячейку установим убранный сенсор, а в правую – условие, что направление спрайта больше минус сорока градусов. Точно так же ограничим поворот мяча вправо, чтобы это работало, только когда направление спрайта меньше сорока градусов.

Запустим игру и попробуем повернуть мяч. Стрелка почему-то поворачивается дальше, чем установленное ограничение. Дело в том, что стрелка и мяч – это разные спрайты со своими скриптами. Изменим скрипт стрелки, ограничим его условия так же, как ограничивали условия в скрипте мяча. Снова запустим игру. Теперь и мяч, и стрелка не поворачиваются больше, чем на сорок градусов. Теперь вратарь не может выйти за пределы ворот, а мяч не может полететь в абсурдном направлении.

Мы узнали:

·     Датчиками называются инструменты, которые показывают состояние некоторых изменяющихся величин.

·     В Scratch множество блоков датчиков, они устанавливаются на место числовых параметров.

·     Сравнивать числа Scratch можно с помощью блоков «<», «=» и «>» из категории «Операторы».

·     Чаще всего датчики используются в условиях.

820

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

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

Вы смотрели