Движение и координаты на сцене

Scratch для юных программистов

Как работать с новой темой

Введение: Куда летит ракета?

Представь, что ты — капитан космического корабля, который летит сквозь неизведанную галактику. На твоём пути встречаются опасные астероиды, мерцающие звёзды и загадочные обитатели далёких планет. Твоя задача — провести корабль к цели, не врезавшись в космический мусор. Ты открываешь панель управления, берёшь в руки штурвал и понимаешь... что корабль тебя не слушается! Ты говоришь ему: «Лети вооооон к той зелёной планете!», но компьютер внутри корабля не понимает человеческих жестов и туманных фраз. Ему нужны точные, математически выверенные указания.
В мире программирования Scratch всё устроено точно так же. В прошлых путешествиях мы научились выбирать актёров (спрайтов), менять театральные декорации (фоны Сцены) и даже заглянули в их гардеробную (вкладку «Костюмы»). Наш Кот или космический корабль уже умеют эффектно выглядеть, но пока они стоят на месте как вкопанные. Чтобы превратить проект в настоящую динамичную игру — с погонями, прыжками, полётами и битвами, — нам нужно научить наших героев двигаться.
Но как объяснить компьютеру, где именно на экране должен находиться персонаж? Как заставить его прыгнуть ровно на вершину платформы, а не провалиться сквозь неё? Для этого создатели Scratch используют величайший инструмент шпионов, картографов и геймдизайнеров — систему координат. Сегодня мы рассекретим её тайны, превратим Сцену в настоящую карту сокровищ и научимся управлять пространством и временем!

Секретная карта Scratch: В поисках Икса и Игрека

Если ты посмотришь на обычный пустой белый экран Scratch, он покажется тебе просто чистым холстом. Но на самом деле прямо под этой белой поверхностью скрывается невидимая паутина из линий. Это координатная сетка.
Давай сыграем в морской бой или вспомним, как устроены шахматы. Чтобы назвать клетку, на которой стоит шахматный конь, мы соединяем букву и цифру — например, E4. Чтобы найти место в кинотеатре, ты смотришь на два числа в билете: Ряд и Место. В Scratch система очень похожа, только вместо букв и слов используются две главные космические оси, две пересекающиеся линии: Ось X (Икс) и Ось Y (Игрек).
Великий перекресток: Точка (0, 0)
В самом центре нашей Сцены находится главная точка отсчёта. Её называют началом координат. Представь, что это перекрёсток двух дорог или центр Земли. В этой точке значение X равно 0, и значение Y тоже равно 0. Записывается это так: (0, 0). Когда ты создаёшь новый проект, Scratch-Кот всегда телепортируется именно на этот Великий перекрёсток. Он сидит строго по центру экрана.

Дорога «Запад – Восток»: Ось X

Линия X — это горизонтальная линия. Она лежит слева направо, как линия горизонта, где заходит солнце. Она отвечает за движение по ширине экрана.
  • Если твой герой идёт направо (на Восток), его координата X увеличивается (становится положительной: +10, +50, +100).
  • Если герой идёт налево (на Запад), его координата X уменьшается (уходит в минус: -10, -50, -100).
У Сцены Scratch есть чёткие границы, за которые нельзя убежать. По оси X экран имеет ширину 480 шагов (или пикселей).
  • Самая крайняя правая точка экрана — это X = 240.
  • Самая крайняя левая точка экрана — это X = -240.

Лифт «Небо – Подземелье»: Ось Y

Линия Y — это вертикальная линия. Она устремлена строго снизу вверх, как трос невидимого лифта или шахта ракеты. Она отвечает за движение по высоте экрана.
  • Если твой герой летит вверх (к облакам), его координата Y увеличивается (+20, +70, +120).
  • Если герой падает вниз (в подземелье), его координата Y уменьшается и становится отрицательной (-20, -70, -120).
По высоте Сцена Scratch чуть меньше, чем по ширине. Её общая высота составляет 360 шагов.
  • Самая верхняя точка (потолок Сцены) — это Y = 180.
  • Самая нижняя точка (пол Сцены) — это Y = -180.

Как это увидеть своими глазами?

Чтобы эта магия стала видимой, ты можешь заглянуть в библиотеку фонов Scratch. Прокрути её в самый низ, и ты найдёшь там специальный технический фон, который называется «X-Y Grid» (Координатная сетка). Загрузи его! Сцена тут же раскрасится в яркие линии: ось X станет оранжевой, ось Y — синей, а по краям появятся точные числовые отметки.
Теперь попробуй взять Scratch-Кота мышкой и перетащить его в верхний правый угол. А теперь посмотри на панель свойств под Сценой. Ты увидишь, как цифры в окошках X и Y стремительно меняются! Если Кот в верхнем правом углу, оба числа будут большими и положительными (например, X: 150, Y: 120). Если утащишь его в нижний левый угол — оба числа станут с минусами. Теперь ты видишь персонажа насквозь — для компьютера он всего лишь точка с двумя координатами!

Компас Scratch: Куда смотрит твой герой?

Прежде чем сделать первый шаг, персонаж должен понять, куда он направлен. Для этого в Scratch существует понятие Направление (или угол поворота). К нему тоже нужно привыкнуть, потому что компас Scratch немного отличается от обычного школьного транспортира.
В Scratch направление измеряется в градусах — от 0 до 360 (или от -180 до 180). Давай представим классические часы со стрелками:
  • Направление 90 градусов — это взгляд направо (направление по умолчанию для Кота). Стрелка часов смотрит ровно на 3 часа.
  • Направление -90 (или 270) градусов — это взгляд налево. Стрелка часов смотрит на 9 часов.
  • Направление 0 градусов — это взгляд строго вверх. Ровно 12 часов. Твой герой готов лететь в космос!
  • Направление 180 градусов — это взгляд строго вниз. Ровно 6 часов. Герой смотрит на свои ботинки.
Если ты нажмёшь на окошко «Направление» в панели свойств спрайта, перед тобой появится круглый циферблат со стрелкой. Ты можешь крутить эту стрелку мышкой, и твой персонаж будет вращаться на Сцене как волчок!

Проблема «Вверх тормашками»

Попробуй развернуть Кота налево (направление -90). Что произошло? О ужас! Кот перевернулся вверх ногами и теперь стоит на голове! Не паникуй, это не баг среды программирования, это её базовая логика. По умолчанию все спрайты крутятся во все стороны вокруг своей оси (стиль вращения «кругом»).
Чтобы Кот не ходил на голове при движении влево, нам нужно настроить стиль вращения. В том же круглом окошке направления внизу есть три маленькие иконки:
  1. Круговая стрелка («Кругом»): Спрайт крутится на все 360 градусов. Подходит для самолётов, мячиков, плавающих рыб.
  2. Две стрелочки влево-вправо («Влево-вправо»): Это наше спасение! Если включить этот режим, Кот никогда не перевернётся. Он будет смотреть либо честно вправо, либо честно влево, оставаясь стоять на лапах.
  3. Перечёркнутый кружок («Не вращать»): Как бы ты ни менял направление в коде, спрайт визуально всегда будет смотреть в одну и ту же сторону. Полезно для Луны, которая летит по орбите, но не должна вращаться сама по себе.

Синие блоки скорости: Изучаем палитру «Движение»

Теперь, когда мы досконально изучили карту (координаты) и компас (направление), пришло время открыть левый шкаф с командами и изучить синюю палитру — Систему Движения. Здесь живут блоки, которые заставляют пиксели перемещаться. Их можно разделить на три важные шпионские группы.

Группа 1: Относительное движение (Шаги и Повороты)

Эти блоки заставляют спрайт двигаться относительно того места, где он находится прямо сейчас, и в ту сторону, куда направлен его взгляд.
  • Блок «Идти [10] шагов». Самый популярный блок. Он не телепортирует героя, а двигает его вперёд по направлению взгляда. Если Кот смотрит вправо (90), то при нажатии на блок он сдвинется вправо на 10 пикселей. Если ты изменишь число на -10, Кот попятится назад, как рак, не разворачиваясь.
  • Блоки «Повернуть вправо/влево на [15] градусов». Эти блоки заставляют спрайт плавно или резко изменять направление взгляда. Каждое нажатие добавляет или отнимает градусы от текущего направления.

Группа 2: Абсолютное движение (Телепортация и Скольжение)

Этим блокам абсолютно всё равно, куда смотрит персонаж и где он находился мгновение назад. Они работают с точными координатами Сцены.
  • Блок «Перейти в x: [0] y: [0]». Это настоящая мгновенная телепортация! Стоит программе дойти до этого блока, как спрайт за миллисекунду исчезает из старого места и возникает в точке с указанными координатами. Идеально подходит для команды «Сбросить игру» или «Вернуть героя на старт при потере жизни».
  • Блок «Плыть [1] сек в точку x: [100] y: [50]». Самый красивый и плавный блок. Вместо мгновенной телепортации герой плавно, как анимация в кино, скользит из своей текущей точки в целевую. Время в секундах определяет скорость: чем меньше секунд (например, 0.2 сек), тем быстрее пролетит спрайт. Чем больше секунд (5 сек), тем медленнее и ленивее он будет ползти.
  • Блок «Перейти в [случайное положение]». У этого блока есть выпадающее меню. Он может мгновенно подбросить спрайт в случайную точку экрана (так создаются хаотично появляющиеся бонусы или кроты, которых надо ловить). А если выбрать вариант «Перейти в [указатель мыши]», то спрайт намертво приклеится к твоему курсору и будет следовать за ним по Сцене.

Группа 3: Точечное управление осями

Иногда нам не нужно менять положение героя целиком, мы хотим изменить только его высоту или только ширину движения.
  • Блоки «Изменить X на» и «Установить X в [50]». Обрати внимание на разницу! «Изменить X на 10» — это прибавить 10 к текущему значению (шаг направо). Если X был 100, он станет 110. А «Установить X в 50» — это жесткая команда: «Сделай координату X равной 50, независимо от того, где ты был!».
  • Блоки «Изменить Y на» и «Установить Y в [-100]». То же самое, но для вертикального лифта. Блок «Изменить Y на 10» толкает героя вверх. А если поставить «Изменить Y на -10» — это идеальная заготовка для эффекта гравитации (падения вниз).

Золотые законы движения и ловушки для новичков

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

Закон «Если касается края, оттолкнуться»

Представь, что ты запустил цикл: блок «повторять всегда» внутри которого лежит команда «идти 10 шагов». Твой Кот радостно бежит направо, достигает границы экрана и... наполовину улетает за пределы видимости! На сцене остаётся торчать только кончик его хвоста. Компьютер честно выполняет команду, ему неважно, видишь ты спрайт или нет.
Чтобы исправить это, внутри синей палитры есть спасительный блок: «Если касается края, оттолкнуться». Если поставить его сразу после шагов внутри цикла, Scratch начнёт непрерывно проверять: не долетел ли Кот до невидимой стены? Как только Кот коснётся границы (X = 240 или -240, Y = 180 или -180), блок автоматически развернёт его направление в противоположную сторону, и герой побежит обратно! (Главное, не забудь включить стиль вращения «влево-вправо», чтобы он не побежал обратно вверх ногами).

Ловушка «Застревание в бесконечном скольжении»

Блок «Плыть...» — прекрасен, но у него есть скрытая особенность: пока спрайт плывёт (например, указано 3 секунды), компьютер «замораживает» выполнение всех следующих блоков в этой цепочке кода. Он ждёт, пока полёт полностью завершится. Если в этот момент ты нажмёшь на клавиатуре стрелочку «вверх», чтобы герой прыгнул, компьютер проигнорирует нажатие, потому что он занят выполнением блока «плыть». Запомни: для динамичного управления игроком с клавиатуры лучше использовать блоки «изменить X» и «изменить Y», а не «плыть». Блок «плыть» лучше оставить для фоновых объектов — пролетающих облаков, декоративных птиц или патрулирующих врагов, которые двигаются сами по себе по заранее известному маршруту.

Практический пример: Создаем код для космической ракеты

Чтобы закрепить наши знания, давай виртуально соберём настоящий рабочий скрипт для игры «Космический патруль». Наша цель — сделать так, чтобы ракета появлялась внизу экрана, плавно летела вверх, а мы могли управлять её полетом по горизонтали (влево и вправо) с клавиатуры.
Часть 1: Настройка старта (Телепортация)
Каждая хорошая игра должна начинаться с правильной расстановки сил. Мы не хотим, чтобы ракета начинала новый раунд из того места, где её в прошлый раз сбил астероид. Нам нужно вернуть её на космодром — в нижнюю часть сцены, строго по центру.
  1. Берём жёлтую шапочку: [Когда нажат зелёный флажок].
  2. Первым делом настраиваем компас: синий блок [повернуть в направлении [0]] (чтобы нос ракеты смотрел строго вверх, в небо).
  3. Настраиваем стиль вращения: синий блок [установить стиль вращения [влево-вправо]].
  4. Телепортируем на старт: синий блок [перейти в x: [0] y: [-140]] (X=0 — это центр по ширине, Y=-140 — это близко к нижнему краю Сцены).
Часть 2: Полет в невесомости (Бесконечный цикл)
Теперь заставим ракету непрерывно лететь вперёд.
  1. Из оранжевой палитры «Управление» берём блок [повторять всегда] и прикрепляем его снизу.
  2. Внутрь этого цикла кладём синий блок [идти [3] шагов]. Поскольку направление у нас 0 (вверх), ракета начнёт плавно взлетать.
  3. Чтобы ракета не улетела в открытый космос навсегда, туда же внутрь цикла добавляем блок [если касается края, оттолкнуться]. Теперь ракета будет бесконечно курсировать от нижнего края к верхнему и обратно!
Часть 3: Штурвал корабля (Управление по оси X)
Добавим интерактивности. Мы хотим смещать ракету влево и вправо с помощью клавиш-стрелок на клавиатуре. Для этого соберём два отдельных независимых скрипта рядом.
Скрипт для движения вправо:
  1. Берём жёлтый блок событий: [когда клавиша [стрелка вправо] нажата].
  2. Прикрепляем к нему синий блок: [изменить x на [15]]. Каждый раз, когда игрок жмёт стрелочку, ракета будет смещаться на 15 пикселей на восток.
Скрипт для движения влево:
  1. Берём жёлтый блок событий: [когда клавиша [стрелка влево] нажата].
  2. Прикрепляем к нему синий блок: [изменить x на [-15]]. Минус заставит ракету сдвигаться в левую сторону (на запад).
Поздравляю! Ты только что создал полноценную систему навигации и движения. Теперь ты не просто зритель, ты — настоящий архитектор виртуальных миров, который повелевает координатами, заставляет объекты подчиняться законам геометрии и создаёт основу для будущих игровых шедевров!

Краткий справочник космического навигатора 
Команда / Понятие За что отвечает? Пример из жизни
Координата X Положение на Сцене по горизонтали (влево / вправо). Диапазон от -240 до 240. Номер места в ряду кинотеатра.
Координата Y Положение на Сцене по вертикали (вниз / вверх). Диапазон от -180 до 180. Номер этажа в лифте небоскрёба.
Точка (0, 0) Точный географический центр Сцены Scratch. Перекрёсток главных дорог города.
Направление 90 Взгляд персонажа строго направо. Стрелка часов показывает ровно 3 часа.
Направление 0 Взгляд персонажа строго вверх (в небо). Стрелка часов показывает 12 часов.
Перейти в X... Y... Мгновенная телепортация в точную точку Сцены. Портал в фантастическом фильме.
Идти... шагов Движение вперёд по направлению взгляда персонажа. Шаг человека в ту сторону, куда смотрят его глаза.
Плыть... секунд Плавное скольжение из текущей точки в целевую за указанное время. Полёт самолётика или скольжение корабля по воде.
 

Проверь себя

← Предыдущая тема Следующая тема →

← Вернуться к разделу