Переменные и условный оператор Усложним программу следующим образом. Пусть объекты перемещаются не вместе, а врозь: сначала один бегает за курсором, потом — другой. Переключение "активности" между объектами пусть происходит с помощью клавиши пробел. Как организовать такую программу?
Ответить на этот вопрос будет очень сложно, если не знать об очень важной составляющей любого программирования —
о переменных. Переменные представляют собой ячейки, в которых хранятся какие-либо данные (число, строка и др.). Причем содержимое ячеек может меняться в процессе выполнения программы. В какой-то момент можно проверить, что там находиться и в зависимости от этого выполнять определенные команды или нет.
Создадим ячейку-переменную под именем
идущий. Для этого нужно нажать на кнопку
переменные и, затем, в ячейке команд Scratch нажать
Создать переменную; в открывшемся диалоговом окне ввести ее имя и нажать
ОК. После чего у нас появится сама переменная и несколько команд для ее изменения.
Нам нужна эта переменная, чтобы в зависимости от ее значения двигался первый объект или второй. Пусть если идущий = 0, то двигается первый объект, а если переменная равна единице, то — второй. Изменение значения переменной будет происходить при нажатии клавиши пробел. Поскольку данная часть программы относится к обоим объектам, то уместно расположить скрипт в объекте
Сцена (хотя не обязательно), переключившись на него. Вот этот сценарий:
Вместо пробела можно выбрать другую клавишу в раскрывающемся списке первой команды сценария. Далее идет сложная инструкция
если — или. Она работает так: если условие в части
если истинно, то выполняются вложенные команды после
если, иначе — будут выполняться вложенные команды после
или. Обе "ветки" никогда вместе не выполняются, они взаимно исключают друг друга.
Теперь рассмотрим условие при инструкции
если. Зеленые команды относятся к операторам.
Операторы — это такие команды, которые что-то делают с данными. Например, выполняют математические операции или сравнивают числа между собой. В данном случае выбран оператор сравнения на равенство. Он проверяет равно ли выражение слева от знака "=" выражению справа. Если — да, то будет работать код после
если, если — нет, то код после или. В нашем случае сравниваются значение переменной идущий и 0.
Мы ничего не "клали" в переменную, однако по-умолчанию ей и так присваивается значение 0, поэтому нам это было делать не обязательно. К тому же, если вдруг изначально в переменной будет не ноль, то ничего страшного: сработает ветка
или.
Что же все-таки делает этот скрипт? Если значение переменной равно 0, то оно меняется на 1. Если же нет, то меняется на 0. Получается, что нажатие клавиши
пробел попеременно меняет значение переменной идущий. Однако при выполнении программы мы не увидим никаких изменений. Действительно, ведь объекты еще "не знают", к какому значению переменной привязаны их действия. Составьте вышеприведенный скрипт и переключитесь на первый объект.
Требуется организовать проверку значения переменной. Для этой цели прекрасно подойдет простая инструкция
если. Вот такие сценарии получаются для первого и второго объектов.
Разница между ними только в том, с чем сравнивается значение переменной: с нулем или единицей. А как мы знаем, ее значение меняется при нажатии пробела. В результате, когда программа запущена, мы можем менять "активный" объект. Доделайте программу и посмотрите, как она работает.
Можно и дальше поиграть с интерактивностью. Пусть объекты меняют свой внешний вид при нажатии определенных клавиш. Например, так:
Можете попробовать свои варианты.