КООРДИНАТЫ. ХОДЬБА ПО КВАДРАТУ

Поділитись

ПРОЕКТ . “ХОДЬБА ПО КВАДРАТУ”

Текстовое решение:

При помощи блока “repeat 4 times do” (повторить 4 раза, делать) можно создавать и более сложные программы.

Представим, что спрайт – это “часовой”, обязанность которого заключается в периодическом обходе охраняемой территории. Зажженный светодиод должен показывать местонахождение “часового”. Решение этой проблемы можно сформулировать в виде задачи:

Задача: Составить программу по перемещению загорающегося светодиода (спрайта) по периметру квадрата. Используя блок “repeat 4 times do” (повторять 4 раза, делать) реализуем циклический алгоритм (псевдокод):

  • показать спрайт с координатами (0,0);
  • переместить спрайт на 4 светодиода вперед;
  • повернуть спрайт вправо на 90 градусов;
  • повторить последние два действия 4 раза.

С учетом описанной специфики среды программирования Microsoft MakeCode наш план деятельности (включая псевдокод) может быть описан следующим образом:

  • удалить обработчик события “forever” (навсегда);
  • создать переменную “Sprite” (спрайт-переменная);
  • запрограммировать созданный спрайт на появление;
  • добавить обработчик события “on button A pressed” (когда кнопка A нажата);
  • написать программный код для обработчика события “on button A pressed” на движение спрайта вперед и поворот по квадрату 4 раза.

Справочник начинающего программиста…

Экран платы представляет собой координатную плоскость, где x – это ось, где располагаются светодиоды по горизонтали (справа налево), y – по вертикали (снизу вверх). Значение координат может меняться по оси x и y, от 0 до 4. Это ровно столько же, сколько и светодиодов в каждой из строке на экране платы micro:bit. Так, у каждого светодиода есть своя пара чисел (x и y), зная которые, можно написать программный код на появлении светодиода в загаданном вами месте. Подробнее с координатами вы познакомитесь в 6 занятии.

Пример загорающегося светодиода со значением (2,2)

Реализуем пошагово написанный выше псевдокод и запрограммируем спрайт на перемещение по квадрату (экрану платы).

Рис. 82. Траектория перемещения спрайта по периметру квадрата

Удаление обработчика события “forever”

Шаг 3. После запуска программы мы хотим, чтобы на экране платы micro:bit загорелся светодиод. Для этого, в разделе “Variables” (переменные), создадим переменную, нажав на “Make variable” (создать переменную) и назовем ее “Sprite” (спрайт).

Раздел “Variables” (переменные) в среде программирования

Экран присвоения имени новой переменной

Переменная при запуске программы принимает свое начальное значение По умолчанию, для числовых переменных это значение равно 0. Оставим его для созданной переменной и поместим ее в обработчик событий “on start” (по запуску).

Первоначальное значение переменной

Шаг 4. Создадим спрайт, программируемый светодиод, который 4 раза будет выполнять движение по квадрату как часовой, производящий обход охраняемой территории. Для этого, воспользуемся блоком “create sprite game at x: 2 y: 2” (создать для переменной “sprite” с координатами x: 2 y: 2) из раздела “Game” (игра), находящемся в раскрывающемся меню раздела “Advanced” (расширенный). Разместим данный блок вместо 0 внутрь блока “set sprite to 0” (задать для переменной “sprite” значение 0), заменив при этом числовые значение координат x: 2 y: 2 на x: 0 y: 0.

Блок для программирования светодиодов платы micro:bit

Программа программирования светодиода

Шаг 5. Заметили, что светодиод начал гореть в левом верхнем углу платы micro:bit? Отлично! Пора запрограммировать наш светодиод на движение по квадрату. Это действие он будет выполнять при помощи изученного вами ранее обработчика события “on button A pressed” (когда кнопка A нажата). Поместим данный блок в рабочую область.

Обработчик события “on button A pressed

Шаг 6. Чтобы светодиод перемещался по квадрату, необходимо запрограммировать его на перемещение вперед и поворот 90 градусов. Для этого, добавим внутрь обработчика события “on button A pressed” (когда кнопка A нажата) 2 блока из раздела “Game” (игра): “Sprite move by 1” (переместить спрайт на 1) и “Sprite turn right by (*) 45” (повернуть спрайт направо на 45 градусов).

По умолчанию нам предлагается переместить спрайт на 1 шаг вперед и повернуть его направо на 45 градусов. Но нам необходимо, чтобы спрайт перемещался с одной стороны экрана на другую, проходя 4 светодиода. Исправим это вместе, заменив в блоке “Sprite move by 1” (переместить спрайт на 1) числовое значение 1 на 4 и в блоке “Sprite turn right by (*) 45” (повернуть спрайт направо на 45 градусов) угол поворота 45 на 90, т.к. поворот направо соответствует углу в 90 градусов.

Блок для перемещения спрайта

Блок для изменения угла поворота спрайта

Программа по перемещению светодиода по экрану платы

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

Шаг 7. Мы могли бы снова добавить 3 раза подряд блоки перемещения из раздела “Game” (игра), но мы советуем вам всегда искать более эффективный и оптимальный способ! В нашем случае, это блок “repeat 4 times do” (повторить 4 раза – делать). Разместите его в обработчик события “on button A pressed” (когда кнопка A нажата) над всеми блоками, чтобы они оказались внутри блока “repeat 4 times do” (повторить 4 раза – делать).

Сейчас наш программный код содержит 2 обработчика события и выглядит следующим образом:

Программа для начального появления светодиода на экране платы

Программа для перемещения светодиода по квадрату 4 раза подряд

Протестируйте программу. Скорее всего вы не увидели перемещение спрайта по квадрату 4 раза подряд. Это связано с тем, что перемещение происходит настолько быстро, что мы не успеваем его увидеть.

Устраним эту проблему.

1 способ. В среде программирования Microsoft MakeCode под эмулятором платы есть блок “Disable Slow-Mo” (замедленный момент), изображенный в виде улитки. Нажав на него и на соответствующие обработчики события, вы сможете увидеть выполнение программы в замедленном действие. Для выключения данного эффекта, нужно нажать на блок “Disable Slow-Mo” (замедленный момент) снова.

2 способ. Добавим блок “pause ms (100)” (пауза ms (100) и разместим его в обработчик событий “on button A pressed” (когда кнопка A нажата) под блоком “Sprite turn right by (*) 90” (повернуть спрайт направо на 90 градусов), чтобы дать нашим глазам возможность увидеть программу.

Таким образом, мы реализовали циклический алгоритм, в котором программный код, прописанный внутри обработчика события “on button A pressed” (когда кнопка A нажата), повторяется 4 раза подряд.


Поділитись