Как стать автором
Обновить
582.82
OTUS
Цифровые навыки от ведущих экспертов

Программирование алгоритмов в Scratch

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.8K

Привет, Хабр!

Ты наверняка слышал про Scratch — визуальный язык программирования, где всё строится из цветных блоков. Возможно, ты уже пробовал делать простые анимации или заставлять кота бегать по экрану. Но знаешь ли ты, что в Scratch можно создавать полноценные игры с физикой, врагами, прыжками, стрельбой и не только?

Сегодня мы покажем, как использовать Scratch по максимуму. Напишем игровой движок с плавным управлением, гравитацией, врагами и даже оружием.

Если ты устал от скучных примеров, где кот просто «идёт 10 шагов», эта статья для тебя.

Мы предполагаем, что Scratch у тебя уже установлен. Если нет, скачай его по этой ссылке и установи перед началом работы.

Алгоритмы в Scratch

Алгоритм — это чёткая последовательность действий, которая приводит к нужному результату.

В Scratch алгоритмы строятся на трёх базовых принципах:

  • Последовательность (команды выполняются сверху вниз).

  • Циклы (повторение действий, например, враг патрулирует уровень).

  • Условия (если игрок нажал кнопку, персонаж двигается; если враг коснулся игрока — отнимаем жизнь).

Но если мы хотим реально крутые игры, нам нужно уметь использовать:

  • Переменные (для хранения скорости, здоровья, координат).

  • Функции (чтобы код не превращался в хаос).

  • Клонирование объектов (чтобы создавать врагов и пули).

  • Триггеры (например, открытие двери, когда собран ключ).

Пишем платформер с плавным управлением

Самая большая ошибка новичков — писать движение персонажа так:

[событие] Когда флаг нажат
    [управление] повторять всегда
        [управление] если клавиша стрелка влево нажата, то
            [движение] идти -10 шагов
        [управление] если клавиша стрелка вправо нажата, то
            [движение] идти 10 шагов

Проблема:

  • Движение резкое, без инерции.

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

  • Нет физики: персонаж не подпрыгивает, не падает.

Создадим переменные для скорости и гравитации.

Создаём переменные:

  • Скорость X — отвечает за горизонтальное движение.

  • Гравитация — отвечает за падение вниз.

  • На земле? — проверяет, стоит ли персонаж на платформе.

Добавляем плавное движение:

[событие] Когда флаг нажат
    [переменные] установить Скорость X в 0
    [переменные] установить Гравитация в -2
    [управление] повторять всегда
        [управление] если клавиша стрелка влево нажата, то
            [переменные] изменить Скорость X на -1
        [управление] если клавиша стрелка вправо нажата, то
            [переменные] изменить Скорость X на 1
        [переменные] установить Скорость X в (Скорость X * 0.8)  # Трение
        [движение] идти Скорость X шагов

Теперь персонаж разгоняется и плавно тормозит.

Добавляем гравитацию и прыжки

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

Добавляем гравитацию:

[управление] повторять всегда
    [управление] изменить y на Гравитация
    [управление] если касается цвета (платформы), то
        [переменные] установить На земле? в 1
        [переменные] установить Гравитация в 0
    [иначе]
        [переменные] установить На земле? в 0
        [переменные] установить Гравитация в -2

Теперь, если персонаж не касается платформы, он падает вниз.

Добавляем прыжки:

[управление] если клавиша пробел нажата и На земле? = 1, то
    [переменные] установить Гравитация в 10

Теперь персонаж подпрыгивает, если он стоит на земле.

Челлендж: попробуй добавить «двойной прыжок».

Создаём умного врага с ИИ

Теперь добавим врага, который преследует игрока.

Создаём переменные:

  • Скорость врага

  • Расстояние до игрока

Пишем код ИИ врага:

[событие] Когда флаг нажат
    [переменные] установить Скорость Врага в 2
    [управление] повторять всегда
        [переменные] установить Расстояние до игрока в [расстояние до персонажа]
        [управление] если Расстояние до игрока < 100, то
            [управление] если x персонажа > x врага, то
                [переменные] изменить x на Скорость Врага
            [иначе]
                [переменные] изменить x на (-Скорость Врага)

Теперь враг преследует игрока.

Здеьс так же можешь попробовать добавь ограничение по дальности, чтобы враг не гонялся за игроком по всей карте!

Добавляем стрельбу и урон

Персонажу нужно оружие.

Создаём пулю:

[событие] Когда клавиша Z нажата
    [управление] создать клон [пуля]

Движение пули:

[событие] Когда я начинаю как клон
    [переменные] установить Скорость Пули в 10
    [управление] повторять пока касается сцены = 0
        [движение] идти Скорость Пули шагов
    [управление] удалить этот клон

Теперь пуля летит вперёд и исчезает.

Добавляем урон врагу:

[управление] если касается врага, то
    [управление] удалить этот клон
    [переменные] изменить Жизнь Врага на -1

Теперь, если пуля попадает во врага, его жизнь уменьшается.

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

Заключение

Сегодня мы создали сложный игровой движок в Scratch:

  1. Реалистичное движение персонажа

  2. Физику и гравитацию

  3. Много врага с ИИ

  4. Стрельбу и урон

Что делать дальше?

  • Добавь анимацию ходьбы персонажа.

  • Сделай систему уровней и препятствий.

  • Добавь очки и бонусы для игрока.

Если у тебя появились вопросы — пиши в комментариях!

Материал подготовлен в рамках нового курса Otus «Компьютерная грамотность и Scratch» для детей. На странице курса можно записаться на бесплатное индивидуальное занятие с персональной диагностикой.

Теги:
Хабы:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS