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