Условия в Scratch

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

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

Условия в Scratch

Тайна развилки: Как компьютер научился принимать решения

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

Оранжевые стражи Scratch: Блоки управления

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

Великое противостояние: Условие «Если — то — иначе»

Но что делать, если одной ветки дороги нам мало? Ведь в жизни часто бывает так, что при одном условии мы делаем одно дело, а при его нарушении — совершенно другое. Если у тебя есть карманные деньги, ты покупаешь в школьном буфете вкусный клубничный сок. А если денег с собой нет, ты не просто стоишь на месте, ты идешь к питьевому фонтанчику и пьешь обычную воду. Для таких сложных жизненных ситуаций в Scratch существует продвинутый оранжевый блок, который называется «Если ... то ... иначе».
Этот блок выглядит еще массивнее своего младшего брата. У него уже не одна, а целых две открытые пасти для заглатывания блоков, разделенные оранжевой перегородкой со словом «иначе». На самом верху по-прежнему красуется шестиугольное окошко для проверки.
Давай проследим за мыслями компьютера, когда он натыкается на этот гигантский блок. Он снова берет лупу и внимательно изучает шестиугольный замок на верхушке. Если условие выполняется и оказывается правдой, компьютер заходит в первую, верхнюю пасть блока — ту, что находится сразу под словом «то». Он выполняет все команды, которые ты туда положил, а потом полностью игнорирует нижнюю часть. Он считает, что раз первая задача выполнена, то нижняя пасть ему больше не интересна, и он перескакивает через нее прямо к финалу скрипта.
А теперь представь противоположную ситуацию: условие в замке оказалось неправдой. В обычном блоке «если» компьютер бы просто убежал. Но здесь так сделать нельзя, ведь у блока есть строгий охранник по имени «Иначе». Если условие не сработало, компьютер сердито ворчит, полностью перепрыгивает первую пасть и со всей скоростью устремляется во вторую пасть, которая расположена под словом «иначе». Он выполняет команды, спрятанные там.
Этот блок можно сравнить с заботливыми родителями. Если ты сделал все уроки (это правда), то родители разрешают тебе включить игровую приставку на один час. Иначе, если уроки не сделаны (это ложь), приставка остается выключенной, а ты отправляешься читать бумажную книгу. Третьего пути нет: компьютер обязательно выполнит либо то, что находится в первой пасти, либо то, что находится во второй. Они никогда не сработают одновременно. Это закон железной логики.

Сенсоры — шестиугольные ключи от замков

Теперь мы знаем, как устроены оранжевые домики условий. Но откуда берутся те самые шестиугольные ключи, которые мы вставляем в замки блоков «если»? Если ты попробуешь засунуть в прямоугольное или круглое окошко обычный синий блок «идти 10 шагов» или фиолетовый блок «сказать привет», у тебя ничего не получится. Scratch устроен как умный конструктор: детали разной формы физически не могут соединиться друг с другом. В шестиугольный замок может поместиться только блок точно такой же шестиугольной формы с острыми краями.
Большинство этих блоков-ключей живут в небесно-голубом разделе, который называется «Сенсоры». Слово «сенсор» звучит очень научно, но на самом деле это просто органы чувств нашей программы. У человека есть глаза, чтобы видеть, уши, чтобы слышать, и кожа, чтобы чувствовать прикосновения. Сенсоры Scratch — это глаза и уши наших спрайтов. С их помощью персонажи начинают понимать, что происходит вокруг них на сцене.
Один из самых популярных голубых блоков — это ключ «Касается ... ?». Нажав на маленькую стрелочку внутри этого блока, ты можешь выбрать, к чему именно должен прикоснуться твой герой, чтобы условие сработало. Это может быть указатель мышки, край экрана или любой другой персонаж, которого ты сам нарисовал. Представь, что ты делаешь игру, где шустрая мышка убегает от голодного кота. Ты берешь оранжевый блок «если», вставляешь в его шестиугольное окошко голубой сенсор «касается Кот?», а внутрь прячешь фиолетовый блок «спрятаться». Теперь, как только кот догонит мышку и прикоснется к ней, сенсор закричит «Правда!», замок откроется, и мышка мгновенно исчезнет со сцены, как будто ее поймали.
Еще один волшебный сенсор — это блок «Касается цвета ... ?». Внутри этого блока нарисован маленький цветной кружок. Если ты кликнешь по нему, откроется палитра, где с помощью специальной пипетки можно выбрать абсолютно любой цвет со сцены. Этот блок — незаменимый помощник для создания гоночных игр или бродилок по лабиринтам. Ты можешь нарисовать на фоне извилистую черную дорогу, а для своей машинки написать условие: если машинка касается не черного цвета дороги, а зеленой травы вокруг нее, то скорость машинки падает до нуля, или она возвращается на самый старт гонки.
Также в разделе сенсоров живут блоки, которые умеют следить за клавиатурой и мышкой. Например, блок «Клавиша ... нажата?» позволяет проверять, держит ли игрок палец на кнопке прямо сейчас. А блок «Мышка нажата?» чутко реагирует на каждый клик по экрану. Скрещивая оранжевые блоки условий с голубыми блоками сенсоров, ты можешь создать для своего персонажа настоящую кожу и зрение.

Зеленые математики: Блоки операторов

Иногда обычных чувств сенсоров не хватает, чтобы принять сложное решение. Представь, что твой герой собирает в лесу спелые земляничные ягоды. Нам нужно сделать так, чтобы игра заканчивалась победой только тогда, когда в корзинке окажется ровно десять ягод. Никакой голубой сенсор не умеет считать ягоды, ведь сенсоры не знают математики. Для решения таких задач в Scratch созданы ярко-зеленые блоки из раздела «Операторы».
Операторы — это умные математические знаки, которые тоже имеют шестиугольную форму и умеют сравнивать разные вещи, числа и переменные. Внутри этих блоков живут три главных знака, которые ты наверняка видел на уроках математики в школе: «больше», «меньше» и «равно».
Давай посмотрим на зеленый шестиугольный блок со знаком «равно». Внутри него есть два круглых пустых окошка, разделенных знаком равенства. В левое окошко мы можем положить округлый блок нашей переменной, в которой компьютер хранит текущее количество собранных ягод (назовем ее «Очки»). А в правое окошко мы своими руками с клавиатуры пишем число 10. Теперь этот зеленый математический блок мы вставляем в оранжевый замок блока «если». Получается понятная фраза: если очки равны десяти, то включить победный звук фанфар.
Зеленые операторы «больше» и «меньше» помогают делать игры более гибкими. Например, если здоровье твоего космического корабля стало меньше единицы, то корабль взрывается, и на экране появляется надпись «Игра окончена». А если уровень тепла в домике пингвина стал больше пятидесяти градусов, пингвину становится слишком жарко, и он просит включить кондиционер.
Кроме того, среди зеленых блоков прячутся настоящие логические связки, которые программисты называют «И», «ИЛИ» и «НЕ». Это супер-операторы, которые позволяют объединять несколько условий в одно супер-условие.
Блок «... И ...» — это самый строгий оператор в мире. Он требует, чтобы обе проверки по бокам от него были чистой правдой одновременно. Представь секретную дверь в сокровищницу гнома. Она откроется только в том случае, если у героя в рюкзаке есть золотой ключ И при этом уровень его опыта больше пяти. Если у тебя есть ключ, но ты еще слишком слаб, дверь не откроется. Если ты силен, но потерял ключ — дверь тоже останется запертой. Только когда оба условия станут правдой, строгий оператор «И» пропустит тебя внутрь оранжевого блока.
Блок «... ИЛИ ...» гораздо добрее и дружелюбнее. Ему достаточно, чтобы хотя бы одна из проверок оказалась правдой. Представь защиту главного героя от магии. Герой не получает урон, если у него в руках деревянный щит ИЛИ если на его голову надета волшебная железная каска. Если сработает хотя бы что-то одно, оператор «ИЛИ» будет полностью доволен и пропустит команду защиты внутрь условия.
Наконец, блок «НЕ ...» — это настоящий блок-перевертыш, который делает все наоборот. Он превращает правду в ложь, а ложь — в правду. Если мы вставим внутрь него условие «Мышка нажата», то весь блок «НЕ мышка нажата» будет работать только тогда, когда пользователь вообще не трогает мышку и его руки свободны.

Три золотых правила безопасной работы с условиями

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

Проверь себя

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

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