Координатная система сцены в Scratch. Движение спрайтов по координатам
Когда на сцене находится несколько спрайтов, становится важным их положение относительно друг друга, их место на сцене. Как вы уже могли понять, изучая панель свойств спрайта, положение героя задается координатами, то есть точкой на плоскости.
В Scratch начало отсчета, то есть точка с координатами (0; 0), находится в центре сцены. Общая ширина сцены составляет 480 точек. Это значит, что координата x может принимать значения от -240 до 240. Общая высота сцены составляет 360 точек. Это значит, что координата y может принимать значения от -180 до 180.
Хотя работу с фонами мы будем изучать позже, добавим на сцену координатную сетку. Это поможет нам сориентироваться в системе координат Скретча. Чтобы выбрать фон из библиотеки, надо нажать на лупу в меню сцены, которое находится в нижнем правом углу окна, на панели "Сцена".
Откроется библиотека фонов, прокрутите ее в самый низ и выберите фон "Xy-grid". На сцене появится координатная сетка.
Давайте уменьшим размер наших спрайтов раза в два, то есть примерно до 50%, чтобы они не занимали большую площадь сцены, а больше походили на точку. Теперь поиграем с их координатами. Для этого можно менять значения x и y на панели свойств и смотреть, где после этого окажется герой. Или просто перетаскивать мышью спрайт на сцене и смотреть как меняются x и y в свойствах.
Например, если x = 0, y = 150, спрайт окажется в центре по горизонтали и вверху по вертикали. Если x = 200, y = 0, то спрайт окажется справа по горизонтали и в центре по вертикали.
На самом деле не обязательно до запуска программы устанавливать спрайты в нужное место с помощью мыши или панели свойств. Обычно это делают программно, с помощью специальных блоков кода, находящихся в разделе "Движение". Одним из управляющих местоположением блоков является команда "перейти в x: … y: …". Вместо точек указываются желаемые координаты.
Эта команда быстро перебрасывает спрайт в заданную точку, поэтому ее часто используют в начале программы:
В приведенном примере, где бы ни стоял на сцене спрайт до запуска программы, как только будет нажат зеленый флажок, герой тут же окажется в точке (0; 50).
Похожая команда ‒ это "плыть … секунд в точку x: … y: …". В отличие от одномоментного перехода в место с указанными координатами, герой будет перемещаться туда постепенно. Как медленно зависит от количества секунд. Если 1 секунда, то быстрее. Если 3 секунды, то медленнее.
Когда нет необходимости в повторе движений (например, ходить туда-сюда), а спрайту надо просто подойти к определенному месту, от использования цикла с вложенным блоком "идти … шагов" можно отказаться. Программа будет проще с командами типа "плыть".
Выше представлен сценарий того, как кот устанавливается в нижнем правом углу, повернувшись лицом налево. После небольшого ожидания он скользит в верхний левый угол и разворачивается направо.
Бывает, что спрайт надо переместить только по горизонтали или только по вертикали. При этом меняется одна координата (x или y), а другая остается прежней. Для таких случаев в Scratch есть отдельные блоки "установить x в …", "установить y в …".
В этом примере нам не важно с какого места по горизонтали кот начнет идти. Если находится посередине, там и начнет. Если у края, пойдет оттуда.
Однако нам важно положение кота по вертикали. Его похождения должны происходить немного выше центра. Устанавливая координату y в 60, мы заставляем спрайт переместится на эту высоту сцены, даже если его перетащили в другое место.
В разделе блоков движения есть внешне похожие команды "изменить x на …" и "изменить y на …". Однако по своему действию они сильно отличаются от команд типа "установить". Им не важна сама координата, они лишь меняют ее значение на указанную величину. Так в определенных ситуациях можно заменить блок "идти ... шагов" на эти блоки.
Здесь спрайт исходно стоит слева и в любом случае не доходит до правого края сцены. Поэтому блок "если касается края, оттолкнуться" не нужен. Однако в тех случаях, когда он нужен, команды изменения координаты на величину не подойдут, потому что им не важно направление поворота спрайта. Они всегда перемещают героя вправо (x) и вверх (y) при положительных значениях и влево (x) и вниз (y) при отрицательных.
В примере ниже объект устанавливается в верхний правый угол, а при каждом клике по нему будет менять свою позицию, направляясь ближе к нижнему левому углу. То есть его исходные координаты будут каждый раз уменьшаться на 30 единиц по оси x, на 20 ‒ по y.
Так через 4 клика спрайт окажется в точке
x = 200 - 30 * 4 = 80,
y = 150 - 20 * 4 = 70.
Мы можем убедиться в этом, если воспользуемся командами "положение x", "положение y". В Scratch блоки без выемок и со скругленными углами ‒ это переменные, своего рода ячейки памяти, в которых хранятся какие-то значения. Обычно переменные создает сам программист, но в Scratch есть много встроенных.
Если на вкладке "Код" в разделе "Движение" установить флажки напротив блоков "положение x" и "положение y", то на сцене отобразятся их имена и текущие значения.
Задание
Из библиотеки добавьте спрайты Mouse 2 (мышь) и Cat 2 (кот).
Воспользовавшись блоками "повторять всегда", "ждать … секунд", "перейти на …", составьте скрипт перехода мыши в случайное место через каждые три секунды. При этом на сцене должны отображаться значения ее положения по осям x и y.
Запрограммируйте кота так, чтобы он постоянно плыл к мыши в течение 2-х секунд, предварительно повернувшись к ней.
PDF-версия курса с ответами к заданиям