Статьи

Сделайте ваш скретч-код более эффективным с помощью пользовательских блоков

Конечный продукт
Что вы будете создавать

Теперь вы прошли большую часть этого сериала для начинающих на Scratch. Вы создали игру, в которой пользователь преследует кота с крабом, кот говорит: «Ой!» когда краб кусает его, и счет сохраняется. В игре есть анимация и ведется счет, который он отображает в конце.

В этой части мы продолжим работу над этим проектом. Мы будем использовать пользовательский блок, чтобы сделать наш код более простым и удобным для работы.

У пользовательских блоков есть несколько применений:

  • Используйте их для применения принципа СУХОЙ (не повторять себя) к своим проектам, заменяя блоки, которые вы используете более одного раза, на пользовательские блоки. Таким образом, вы можете определить процедуру один раз, а затем использовать ее всякий раз, когда вам нужно, вставив свой пользовательский блок в ваш проект.
  • Если ваши скрипты становятся большими и громоздкими, используйте их, чтобы привести в порядок вещи и хранить длинные процедуры в другом месте.
  • Создание рекурсивных подпрограмм, в которых подпрограмма запускается снова, если условие выполняется или не выполняется.
  • Создание подпрограмм, в которых значения или строки могут быть изменены при каждом добавлении подпрограммы в сценарий.

В этом уроке мы будем использовать первые три подхода.

Для завершения этого урока вам понадобится:

  • бесплатный аккаунт с нуля
  • веб-браузер с доступом к Scratch (я рекомендую использовать современный браузер, такой как Chrome, Firefox, Safari или Opera для лучшего опыта)

Мы будем работать над проектом, созданным в последней части этой серии , над анимацией. Мы будем использовать ресурсы и сценарии, которые мы создали до сих пор, и добавим больше.

В зависимости от того, работали ли вы с этим учебником, есть два способа начать работу с этим учебником:

  • Откройте проект, который вы создали для последнего урока, и сделайте его дубликат.
  • Сделайте ремикс проекта, который я создал, чтобы поддержать последний урок.

В качестве альтернативы вы можете просто продолжить работу в том же проекте, который вы уже создали. Вот как вы делаете каждый из них (вам нужно сделать только один).

Откройте Scratch и перейдите к проекту, который вы хотите скопировать. Убедитесь, что вы нажали кнопку See Inside , чтобы увидеть работу проекта.

На панели инструментов выберите « Файл»> «Сохранить как копию» :

Дублирование вашего собственного проекта

Скретч откроет вашу новую копию. Переименуйте его и начните работать над этим.

Войдите в Scratch и перейдите на страницу моего проекта по анимации .

Нажмите кнопку See Inside , чтобы просмотреть проект:

Remixing My Project

Теперь нажмите кнопку Remix . Скретч сохранит дубликат моего проекта как новый проект в вашем аккаунте. Переименуйте его, и вы готовы!

Сначала вам нужно определить, где пользовательский блок сделает ваши сценарии более эффективными. В этом проекте основной сценарий для Stage включает в себя некоторое повторение двух строк:

  • wait 1 secs
  • change Timer by -1

Это не слишком много повторяющегося кода, поэтому в реальном проекте вы можете оставить его как есть, но для целей данного руководства давайте заменим его на пользовательский блок.

Выберите сцену и нажмите на дополнительные блоки . Нажмите на кнопку « Сделать блок» . Вам будет представлено диалоговое окно New Block :

Создание пользовательского блока, чтобы избежать повторения

Теперь вы увидите новый скрипт ‘hat’ с именем define Count down every second (или как вы его называли):

Создание пользовательского блока, чтобы избежать повторения

Чтобы определить этот блок, вам нужно добавить блоки, которые он заменит под «шляпой». Это будет wait 1 secs и change Timer by -1 блок.

Как только вы это сделаете, отредактируйте сценарий с этими двумя повторяющимися блоками, чтобы каждый раз заменять эти два блока на ваш. Скрипт теперь будет иметь 11 блоков кода вместо 14:

Создание пользовательского блока, чтобы избежать повторения

Это только уменьшило код на три строки в этом скрипте, но вы можете видеть, как если бы вы использовали большие подпрограммы или повторяли их чаще, возможно, для разных спрайтов, это сделало бы вещи более эффективными. Если вы хотите, чтобы пользовательский блок применялся ко всем вашим спрайтам, создайте его в рабочей области.

Другой способ использования пользовательских блоков — замена больших подпрограмм в ваших скриптах, что делает ваши скрипты короче и проще в управлении. У спрайта cat в основном сценарии достаточно много блоков, поэтому давайте применим этот принцип к этому.

Вот как сейчас выглядят скрипты cat:

Создание пользовательского блока для сокращения скрипта

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

Убедитесь, что вы выбрали кошку, и перейдите в раздел « Дополнительные блоки ». Нажмите кнопку « Сделать блок» и назовите свой первый блок. Я собираюсь назвать это: «Пользователь определяет звук кота».

Теперь перетащите блоки, которые запускают эту процедуру, в «шапку» для вашего пользовательского блока. Блоки, которые вам нужно переместить, следующие:

  • ask Should the cat meow or scream when it's nipped by the crab? and wait
  • if answer = meow then
  • say meow for 2 secs
  • else
  • if answer = scream then
  • say Scream! for 2 secs

Убедитесь, что вы перетаскиваете любые блоки под ними обратно в исходный скрипт.

Теперь добавьте User defines cat sound блок User defines cat sound в ваш оригинальный скрипт в том месте, где вы вытащили блоки выше.

Повторите это для строк кода ниже: создание нового пользовательского блока с именем Cat reacts to being caught , добавление блоков к нему и добавление нового Cat reacts to being caught блока в исходном скрипте.

Вот как выглядят скрипты кота:

Создание пользовательского блока для сокращения скрипта

Объем кода одинаков, но, разделив две подпрограммы, вы упростили просмотр того, что происходит в исходном сценарии. Это техника, которую некоторые люди найдут полезной, в то время как другие предпочитают хранить все свои блоки в одном длинном сценарии!

Другое использование пользовательского блока — создание рекурсивной подпрограммы, в которой подпрограмма может быть запущена внутри себя. Это проще объяснить, создав его.

User defines cat sound пользовательский блок User defines cat sound который мы только что определили, просит пользователя ввести звук, который издаст кот. Если пользователь вводит «мяу» или «крик», скрипт реагирует на это. Но что, если пользователь вводит опечатки или вводит что-то еще? Если это произойдет, мы хотим показать сообщение пользователю, а затем снова задать вопрос. Мы можем сделать это, заставляя User defines sound рекурсивную User defines sound рутину.

Выберите спрайт кошки и отредактируйте User defines cat sound пользовательский блок User defines cat sound . Начните с замены блока if внутри секции if - else блока if - else на второй блок if - else . Убедитесь, что вы скопировали условия ( answer = scream ) из исходного блока if раздел if - else нового блока if - else . Двигай, say Scream! for 2 secs say Scream! for 2 secs блок внутри цикла if в этом блоке if - else .

Теперь в разделе if - else блока if - else добавьте эти блоки:

  • say Sorry, I didn't catch that for 1 secs
  • set Timer to 0
  • User defines cat sound

Вот как будет выглядеть ваш скрипт:

Рекурсивная рутина

Теперь, если пользователь вводит неправильный ответ, кошка скажет: «Извините, я не уловил это», таймер обнулится, и процедура будет запущена снова, спрашивая пользователя, какой звук он хочет, чтобы кошка сделать.

Пользовательские блоки — очень полезный инструмент в Scratch. Как вы узнали из этого урока, вы можете использовать их для сохранения повторяющегося набора блоков снова и снова в вашем проекте, или вы можете определить подпрограммы, которые затем добавляете в сценарий, делая ваши сценарии более управляемыми. Если вам нужно повторить процедуру, если условие выполнено, вы можете создать рекурсивную процедуру, подобную той, которую вы создали для кошки.

Вы также можете включить строки, числа и логические входы в свои пользовательские блоки, что означает, что каждый раз, когда вы добавляете блок в скрипт, вы можете изменить способ его работы. Для получения дополнительной информации об этом, проверьте Scratch Wiki .

Ваш скретч-проект завершен! В следующей и последней части этой серии мы рассмотрим, как вы можете поделиться своей работой и создать студии для совместной работы.