Спрайты
Слово «спрайт» часто используется в программировании игр для обозначения фигурок героев и предметов. Такие фигурки – это на самом деле рисунки или фотографии, то есть компьютерная графика.
Однако спрайт – не только картинка, это объект, наделенный программным кодом и как следствие свойствами и способностями. Со спрайтом можно взаимодействовать как с виртуальной сущностью, отдавать ей команды и получать от нее данные.
Кот в Scratch – не единственный объект-спрайт. Добавить на сцену другие можно несколькими способами: загрузить картинку с компьютера, нарисовать в самой среде программирования, выбрать из библиотеки. Для всего этого в Scratch предусмотрено специальное меню, которое находится внизу справа на панели спрайтов:
Пока ограничимся тем, что будем выбирать готовые спрайты из библиотеки. Для этого надо нажать лупу. Откроется библиотека, где можно найти подходящего героя.
После клика по нему он появится на сцене. Также на панели спрайтов под свойствами появится его иконка. Рядом с иконкой кота. Свойства объекта, где вы задаете ему имя, положение, размер и поворот, отображаются только для того спрайта, который выделен.
Если вы захотите удалить один из спрайтов, кликните по его иконке под свойствами. Этот спрайт станет выделенным, выбранным, у него появится значок корзины с крестиком, кликнув по которому можно удалить спрайт из игры.
Когда в Scratch мы собираем блоки в программный код, этот код не существует в прострации сам по себе. Чаще всего он относится к какому-то спрайту. Другими словами, у каждого спрайта свой программный код, своя программа, свое предназначение. Герои могут «общаться» между собой через сигналы, которые посылают друг к другу. Но это другая история.
Сейчас надо запомнить, что когда мы работаем с блоками, следует обращать внимание на то, какой объект выделен. В Scratch появляется подсказка в верхнем правом углу поля редактора кода. Там бледным цветом отображается фигурка выделенного на данный момент спрайта. А значит весь код, который вы видите в рабочей области, относится только к данному герою.
Когда выделяется другой спрайт, то код предыдущего становится невидимым.
Нередко код одного спрайта оказывается похожим на другой. Например, оба героя ходят по сцене, просто с разной скоростью и в разные направления. Собирать два раза почти одинаковую комбинацию блоков – не слишком удачное решение. Проще скопировать программу одного спрайта, добавить ее другому, а потом немного изменить.
В Scratch копировать собранные в программу блоки можно как в пределах одного проекта, так и переносить копию в «рюкзаке» из одного проекта в другой. Рюкзак находится внизу интерфейса среды разработки.
Допустим, у нас есть проект под названием «Проект 1», где мы составили программу движения кота туда-сюда. Мы хотим скопировать этот код в «Проект 2». Тогда мы заходим в первый проект, открываем рюкзак и перетаскиваем сюда конструкцию блоков.
При этом надо помнить правило: переносится участок кода от верхнего блока, за который мы держимся, и блоки, расположенные ниже него. Если вы взялись за блок, расположенный где-то в середине программы, то верхние блоки оторвутся и не будут захвачены.
Положив в рюкзак программу, мы возвращаемся во второй проект. Выделяем спрайт, которому хотим добавить код. Открываем рюкзак и достаем из него нашу программу.
Чтобы скопировать программу одного спрайта на другой в пределах одного проекта, достаточно захватить код и бросить его на иконку другого спрайта, которая расположена под свойствами на панели спрайтов.
Если надо скопировать код в пределах одного спрайта, надо кликнуть по конструкции правой кнопкой мыши и в контекстном меню выбрать «Дублировать».
Также обратите внимание на пункт «Добавить комментарий». Программисты часто пользуются комментариями, чтобы пояснить себе и остальным, что делает та или иная часть программы. Ведь при взгляде на сложный код не всегда сразу можно понять, для чего он, и как все это работает.
Когда на сцене обитают несколько спрайтов, становится важным их положение относительно друг друга, их место на сцене. Как вы уже должны были понять, изучая панель свойств спрайта, положение героя задается координатами, то есть точкой на плоскости.
В 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).
Отметим напоследок про слои. Наше пространство не двумерное, как плоскость, а трехмерное. У нас есть высота, ширина и длина. Хотя Scratch позволяет создавать только двумерные анимации, на самом деле даже в 2D-анимации есть своего рода третье измерение. Это слои.
Пусть по сцене перемещаются два спрайта. Что будет когда их координаты совпадут? Ничего. Они не столкнуться и не затормозят друг друга. Один спрайт пройдет как бы позади другого, а другой – поверх первого. Каждый живет на своем слое плоскости и ему нет дела до другого.
Однако бывает важно, слой какого спрайта расположен выше, то есть впереди. Посмотрите на рисунок:
Слева слой ракеты расположен выше, слоя кота. Справа, наоборот, кот находится над ракетой.
В Scratch изменить очередность слоев можно как мышкой на сцене, так и с помощью блоков кода. Чтобы это сделать первым способом, надо взять тот спрайт, который должен быть над, и кинуть его на спрайт, чей слой должен быть под.
Блоки изменения очередности слоев находятся в фиолетовой секции «Внешний вид». Это команды «перейти на передний/задний фон» и «перейти вперед/назад на … слоя».
Составьте программу, в которой один спрайт постоянно ходит за указателем мыши, а второй – находится в центре сцены и, стоя на одном месте, медленно крутится по часовой стрелке. Слой первого объекта должен быть над слоем второго.
Для выполнения задания потребуются две дополнительные команды – «повернуться к указатель мыши», «повернуть по часовой стрелке на … градусов» (вместо слов «по часовой стрелке» на блоке изображена дуговая стрелка).
X Скрыть Наверх
Программирование в Scratch. Курс
Последовательное и одновременное выполнение скриптов
В прошлых уроках мы соединяли блоки команд в конструкции, которые можно называть маленькими программками. Также их можно назвать скриптами. В одном проекте может быть множество скриптов. Например, если есть два героя-спрайта, вероятно у каждого будет свой скрипт, своя маленькая программа. А весь проект – это большая общая программа, состоящая из множества мелких.
В программировании отдельные части большой программы могут выполняться либо по очереди друг за другом, то есть последовательно, либо одновременно друг с другом, то есть параллельно. Во втором случае говорят о многопоточности, то есть каждый скрипт работает в своем потоке, а разные потоки текут во времени одновременно.
Когда для каждого спрайта одного проекта вы добавляете свою конструкцию блоков, которая начинается с команды «когда флажок нажат», то как только игра запускается, оба героя начинают параллельно независимо друг от друга выполнять свои команды. Это пример одновременного выполнения скриптов.
Более того, один и тот же спрайт может содержать два независимых скрипта, каждый из которых будет выполняться в своем потоке. Рассмотрим пример. Пусть кот ходит по сцене и при этом меняет свой костюм.
В Scratch многие спрайты на самом деле состоят не из одного изображения, а из нескольких. Это можно увидеть на вкладке «Костюмы».
Поэтому когда выполняется команда «следующий костюм», происходит переключение на следующее изображение спрайта. Если костюмов всего два, то они будут чередоваться.
В приведенном выше примере блоков кода оба скрипта будут выполняться одновременно. Мы увидим, что кот не только перемещается, но еще двигает ногами. Этот эффект возникает от того, что изображения-костюмы быстро меняются.
Если отсоединить блок «когда флажок нажат» от первого скрипта, то при запуске игры кот будет стоять на месте, будут двигаться только его ноги.
Если же мы отсоединим блок «когда флажок нажат» только от второго скрипта, то кот будет перемещаться, но его ноги не будут двигаться.
Таким образом, каждый скрипт вносит свой вклад и работает независимо от другого, но одновременно с ним.
Вы спросите, почему нельзя было вставить команду «следующий костюм» в цикл первого скрипта и вовсе отказаться от второго? На самом деле можно. Однако в этом случае кот начнет менять костюмы так часто, что у вас зарябит в глазах. Тогда почему бы сюда же не добавить команду «ждать … секунд»? Потому что в этом случае, кот будет останавливаться, и плавного движения не получиться. Движение будет урывистым, перед каждой сменой костюма будет возникать задержка.
Теперь поговорим о последовательном выполнении скриптов. На самом деле такое поведение встречается чаще хотя бы потому, что команды в одном скрипте выполняются последовательно. А чтобы друг за другом выполнялись разные скрипты, один из них должен вызывать другой, то есть передавать своего рода сообщение.
Также бывает, что скрипт начинает выполняться только при определенных условиях. Например, когда нажимается одна из клавиш на клавиатуре. При этом работа других скриптов может как останавливаться, так и не останавливаться. Во втором случае это уже не может считаться последовательным исполнением.
Давайте рассмотрим вариант передачи сообщения, когда один скрипт вызывает другой. Пусть у нас будет два спрайта – кот и собака. Сначала кот ходит по сцене. И только когда он останавливается и исчезает, на сцене появляется собака и начинает ходить.
Поскольку при запуске игры один из спрайтов должен быть видимым, а другой невидимым, воспользуемся командами «показаться» и «спрятаться». Вынесем их в отдельные скрипты, чтобы они не мешались в основной логике игры.
Теперь когда кот выполнит свою порцию шагов, с помощью блока «передать сообщение1» он пошлет сообщение, которое может перехватить любой объект программы. В данном случае сообщение будет ждать только собака, потому что только ей мы добавили команду «когда я получу сообщение1».
И как только она получит сообщение, она покажется и начнет ходить.
В итоге получится, что скрипты, отвечающие за ходьбу кота и собаки, будут выполняться последовательно, один за другим.
Команда «передать сообщение» и «когда я получу сообщение» могут передавать любое сообщение, а не только «сообщение1». В проекте могут циркулировать десятки различных сообщений, которые одни объекты посылают, а другие ждут.
Чтобы добавить новое сообщение, надо кликнуть по маленькому треугольнику в этих командах и в раскрывающемся списке выбрать «Новое сообщение».
После этого на экране появится диалоговое окно, куда вводится сообщение. Например, «кот вызывает собаку».
Когда сообщение создано, оно становится доступным через раскрывающийся список команд «передать …» и «когда я получу …», где вместо точек может стоять любое сообщение.
При этом надо понимать, что если, например, кот передает сообщение «кот вызывает собаку», то собака должна получать именно это сообщение, а не какое-либо другое. Иначе она не будет реагировать.
Составьте программу по следующему описанию:
- Кот недолго ходит по сцене, потом останавливается, но не исчезает.
- Появляется второй спрайт и тоже недолго ходит по сцене.
- Когда второй спрайт останавливается, кот снова начинает недолго ходить по сцене.
- Когда кот останавливается во второй раз, на сцене появляется третий недолго бегающий спрайт.
При выполнении задания также воспользуйтесь блоком «передать сообщение и ждать до конца». Эта команда останавливает текущий скрипт до тех пор, пока не выполнится скрипт, который получает сообщение.
X Скрыть Наверх
Программирование в Scratch. Курс
Интерфейс и инструменты среды программирования Scratch 3
Кружок робототехники Робикс сегодня рассказывает об интерфейсе и основных инструментах программы Scratch. Если пока не знакомы с ней, то это бесплатное решение для создания мультфильмов и игр.
Для своих статей мы выбираем разные вопросы и темы программирования на Scratch. В каждой инструкции разбираются лишь отдельные блоки и области приложения. Например, связанные с использованием переменных или обработкой условий.
Сегодня обсудим наиболее часто используемые рабочие области и инструменты Scratch 3.
Варианты установки Scratch
Scratch доступен в двух вариантах: онлайн (в браузере) и оффлайн (отдельное приложение для установки на компьютер). Оба бесплатны. Функционал в них идентичен.
Чтобы использовать веб-версию, просто переходим по ссылке: https://scratch.mit.edu/projects/editor/ — и начинаем работу над новым проектом.
Для разработки своих игр в настольном приложении — сначала скачиваем и устанавливаем его.
На момент написания статьи актуальна версия 3.23.1, которая представлена несколькими реализациями: для Windows, MacOS, ChromeOS и Android. Первые две можно взять прямо с сайта программы: https://scratch.mit.edu/download
Если будете устанавливать приложение на планшет или ноутбук через Google Play, не перепутайте Scratch с ScratchJr. Второе — крайне урезанная и упрощенная вариация, она для малышей от 5 лет.
Обзор рабочих областей окна Scratch
Окно программы Scratch 3 содержит несколько рабочих зон и меню.
Самая верхняя строка позволяет переключать язык надписей во всем приложении (по умолчанию — английский), а также сохранять / открывать файлы проектов и отменять последние совершенные действия.
На ранних этапах работы со Scratch могут быть полезны встроенные руководства, в них создатели заложили советы и короткие инструкции для начинающих.
Вверху окна, сразу после синей полосы с кнопками, переключаются вкладки с инструментами.
Код
Основная работа производится здесь. Добавление персонажей и объектов на экран, программирование анимации и взаимодействий.
(В предыдущих версиях программы вкладка «Код» называлась «Скрипты».)
Костюмы
Сюда переключаемся для настройки выбранного спрайта. Изменение цвета, размера, формы или внешнего вида целиком.
В Scratch все добавляемые в проект персонажи и предметы называются спрайтами.
Звуки
Если объект может издавать звуки, то на этой вкладке их можно прослушать и изменить.
Когда находимся на какой-то из вкладок, нам становится доступен соответствующий набор панелей и возможностей. Наиболее часто используются первые два: для написания кода и редактирования спрайтов.
Основные зоны вкладки «Код»
1. Палитра блоков
Здесь можно найти все возможные блоки, из которых строятся проекты и благодаря которым происходят различные действия в игре или анимации.
Для удобства, блоки поделены на группы, отличающиеся по цвету и назначению.
2. Область кода
Здесь из блоков собираются последовательности — скрипты, — а также настраиваются действия, которые выполняются спрайтами.
Вызываемые события могут зависеть от времени с запуска игры, взаимодействия объектов на экране и нажатия каких-то кнопок игроком.
3. Сцена
На этом экране происходит анимация или игровой процесс (зависит от цели проекта).
Спрайты можно установить в нужные места вручную или при помощи специализированных блоков в области кода.
4. Панель спрайтов
Все объекты, которые помещаются на сцену, появляются на этой панели. Здесь производится их добавление и настройка.
Мы можем управлять размером и положением спрайта в пространстве, а также задать ему имя и режим отображения (скрыть с экрана, повернуть вокруг оси).
5. Выбор фона
Небольшая панель рядом со сценой позволяет выбрать фон для анимации из встроенной библиотеки или загрузить свой.
Можно выбрать несколько изображений и управлять ими из своего алгоритма.
Запуск и остановка выполнения проекта в Scratch производятся с помощью специальных кнопок рядом со сценой — с зеленым флажком и красным значком соответственно.
Основные зоны вкладки «Костюмы»
При переходе на вкладку «Костюмы» остаются доступными сцена, а также панели спрайтов и выбора фона (см. пп. 3-5 выше). Область кода и блоки заменяются инструментами для рисования и других операций с изображениями.
Функционал вкладки «Костюмы»:
Панель костюмов спрайта
У каждого объекта на сцене может быть несколько обличий. Особенно это актуально, если нужно анимировать его. Перещелкивая костюмы, мы и будем получать движения.
Область рисования
Инструменты здесь достаточно интуитивны. Выбираем «Круг» и рисуем окружность, переключаемся на «Кисть» и изображаем все, что попросит душа (и позволит наш талант художника).
В Scratch встроена библиотека, из которой можно выбирать и добавлять в свои проекты готовые спрайты. Некоторые из них уже анимированы и имеют звуковые эффекты.
Этапы разработки своего проекта
Базовая последовательность действий для создания своей игры или мультфильма такова:
- Запускаем Scratch и добавляем первый спрайт на сцену. Можно поименовать проект, но это не обязательно.
- Настраиваем внешний вид объекта или персонажа (смотря с кого начали). Рисуем костюм или выбираем из готовых.
- Собираем скрипт из блоков. Слева в палитре ищем нужную группу и поочередно тащим нужные условия, операторы, действия в область кода.
- Добавляем новые спрайты и скрипты, переключаемся между ними и дорабатываем, пока не реализуем свою задумку.
- Периодически запускаем проект и тестируем его работу. Вносим правки, снова пробуем играть или смотреть свой мультик.
- Когда всё готово, сохраняем файл с проектом (по возможности, лучше бы сохранять и промежуточные варианты).
Доведенный до ума проект можно опубликовать и дать другим людям поиграть в него. Не забудьте только оставить комментарий с инструкцией или короткой подсказкой о цели игры и кнопках управления персонажем!
Курсы Робикс, в которых изучается этот материал
Introducing new Paper mode
Цикл, тело которого выполняется до тех пор, пока выполняется условие, указанное перед его началом, называют:
Цикл с счетчиком
Безусловный
Цикл с постусловием
Цикл с условием
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Сколько значений одновременно может храниться в переменной?
Multiple Choice
Please save your changes before editing any questions.
30 seconds
В каком элементе блок-схемы изображается условие алгоритма:
прямоугольник
шестиугольник
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Закончите предложение: «Алгоритмом называется …»
система команд исполнителя
все команды, которые исполнитель понимает и умеет выполнять.
описание конечной последовательности шагов в решении задачи, приводящей от исходных данных к требуемому результату
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Закончите предложение: «Алгоритм, в котором команды выполняются в порядке их записи, т. е. последовательно друг за другом, называется …»
циклическим
с ветвлением
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Какой размер сцены в Scratch в пикселях?
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Какие переменные бывают в Scratch
Только локальные (для данного спрайта)
Только глобальные (для всех спрайтов)
Локальные и глобальные
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Что такое переменная?
Область, в которой будет происходить то, что мы программируем (мультфильм, игра, презентация и т. д.)
Координата, которая показывает местоположение спрайта на сцене.
Ячейка в памяти компьютера, в которой хранятся данные.
Команда из языка программирования Scratch.
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Для реализации алгоритма с полным ветвлением в Scratch использую команду:
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Можно ли менять имя спрайта в Scratch?
Только у спрайта, которого нарисовал ты сам
Можно, если у тебя есть статус Скретчера
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Спрайт в Scratch это.
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Красный флажок в Scratch обозначает.
Multiple Choice
Please save your changes before editing any questions.
30 seconds
С помощью какой команды можно создать анимацию для спрайта?
следующий костюм
следующий фон
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Костюм — это.
пиджак на вешалке
внешний вид спрайта
движение персонажа
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Вы можете нарисовать новый костюм в Scratch?
Нет, это невозможно
Multiple Choice
Please save your changes before editing any questions.
30 seconds
Графический редактор в Scratch может быть в векторном и растровом формате
Неа, только в векторном
Нет, только в растровом
Нет таких возможностей. Просто редактор и всё
Explore all questions with a free account
Continue with Google Continue with Microsoft Continue with email Continue with phone