Создание игры с подсчётом очков
Scratch для юных программистов
Как работать с новой темой
- Внимательно прочитай теорию.
- Разбери примеры.
- Реши практические задачи.
Создание игры с подсчётом очков
Давай добавим в наш платформер и переменную «Очки», и полноценный второй уровень с ускоренным ежиком и новым фоном. Так твоя игра превратится в настоящее аркадное приключение.
Для этого нам нужно обновить код у трех участников: фона (Сцены), Главного героя и Ежика.
Шаг 1. Создаем глобальный сундук для Очков
Сначала сделаем так, чтобы игра умела считать твои прыжки.
- Зайди в оранжевый шкаф «Переменные», нажми «Создать переменную».
- Назови её
Очкии выбери переключатель «Для всех спрайтов» (чтобы и ежик, и герой могли в неё заглядывать). Оставь галочку, чтобы счетчик горел на экране.
Теперь настроим Сцену (фон). Перейди в код фона и собери скрипт управления уровнями и сброса очков:
scratch
когда зеленый флажок нажат
задать [Очки v] значение (0) // в начале игры у нас ноль очков
переключить фон на [Замок 1 v] // включаем первый уровень
передать [Старт уровня v]
Шаг 2. Как ежик начисляет очки и ускоряется на 2 уровне
Перейди в код Ежика. Раньше он просто катался с фиксированной скоростью. Теперь мы сделаем так, чтобы он начислял очко каждый раз, когда успешно докатится до левого края (это значит, что герой его перепрыгнул!). А ещё он будет проверять, какой сейчас уровень, чтобы бежать быстрее.
Замени старый скрипт Ежика на этот новый и продвинутый:
scratch
когда я получу [Старт уровня v]
повторять всегда
перейти в x: (240) y: (-100) // прячем ежика на правом краю экрана
// ПРОВЕРКА УРОВНЯ: если фон первый, ежик катится медленнее (по 10 шагов)
если <(имя фона) = [Замок 1 v]> то
повторить (48) раз
изменить x на (-10)
повернуть в направлении ((направление) + (15))
изменить [цвет v] эффект на (1) // на 1 уровне он обычный
ждать (0.02) секунд
конец
конец
// ПРОВЕРКА УРОВНЯ: если врубился 2 уровень, ежик включает турбо (по 16 шагов)!
если <(имя фона) = [Замок 2 v]> то
повторить (30) раз
изменить x на (-16) // скорость выше!
повернуть в направлении ((направление) + (25))
изменить [цвет v] эффект на (10) // ежик бешено мигает, предупреждая об опасности!
ждать (0.01) секунд
конец
конец
// ФИНИШ КРУГА: ежик добежал до левого края, значит герой его перепрыгнул!
изменить [Очки v] на (1) // Ура! +1 очко в наш сундук памяти
конец
Шаг 3. Взятие кристалла и портал на 2 уровень
Теперь перейдем в код Главного героя. Нам нужно изменить его третий скрипт (тот, который проверял касание кристалла). Вместо мгновенной остановки игры кристалл теперь будет переносить нас на следующий уровень! Но если мы возьмем кристалл на втором уровне — это уже абсолютная победа.
Замени блок
если касается Кристалла внутри третьего скрипта героя на вот такую хитрую проверку:scratch
если <касается [Crystal v]?> то
играть звук [Win v] // победный фанфар!
если <(имя фона) = [Замок 1 v]> то // ЕСЛИ МЫ НА 1 УРОВНЕ:
сказать [Уровень 1 пройден! Переход!] на (2) секунд
переключить фон на [Замок 2 v] // меняем декорации
перейти в x: (-180) y: (-100) // возвращаем героя на старт в левый угол
передать [Старт уровня v] // даем команду ежику обновить скорость!
иначе // ЕСЛИ МЫ УЖЕ НА 2 УРОВНЕ:
повторить (10) раз
изменить [размер v] на (10)
повернуть в направлении ((направление) + (36))
конец
сказать (соединить [ТЫ СУПЕРГЕРОЙ! Финальный счет: ] (Очки)) на (4) секунд
стоп [все v] // вот теперь полная победа!
конец
конец
⚠️ Внимание, баги: скрытые ловушки в коде
В предложенных скриптах есть два классических скрытых бага Scratch, из-за которых может «сломаться» игра. Обязательно разберите их:
- Баг «Зависание на старте 2 уровня» (Критический)
- Где прячется: В коде Главного героя при касании Кристалла:
сказать [Уровень 1 пройден!] на (2) секунд->переключить фон. - В чем проблема: Блок
сказать ... на 2 секундполностью замораживает скрипт героя на 2 секунды. В это время Ежик продолжает бежать на 1 уровне, ведь фон еще не поменялся! Ежик врезается в говорящего героя, срабатывает старый скрипт проигрыша (если касается Hedgehog то стоп все), и игра завершается. - Как исправить: Блок
переключить фон на Замок 2иперейти в x: -180 y: -100нужно ставить ДО блокасказать, а не после.
- Где прячется: В коде Главного героя при касании Кристалла:
- Баг «Бесконечный цикл и лаг» (Опечатка в названии)
- Где прячется: В коде Ежика.
- В чем проблема: Если сделать опечатку в названии фона (например, написать
Замок1без пробела), то оба условияесли имя фона = ...вернут ложь. Ежик попадет в бесконечный цикл без блоков ожидания (ждать), мгновенно начисляя миллионы очков и намертво вешая Scratch. - Как исправить: Выбирать названия фонов из выпадающего списка, а не писать их руками.
🎮 Испытание новой супер-игры!
- Нажми 🟢. Счет обнулился, включился первый фон, ежик покатился с обычной скоростью.
- Перепрыгивай ежика — как только он исчезает слева и появляется справа, твои Очки увеличиваются на 1.
- Допрыгни до Кристалла. Игра не остановится! Музыка сыграет, фон поменяется на ночной или космический, а ежик побежит навстречу почти в два раза быстрее, да еще и начнет мигать!
- Сможешь перепрыгнуть скоростного ежика на втором уровне и снова добежать до кристалла? Если да, то герой выдаст на экран твой итоговый рекорд и завершит игру!