
Scratch – идеальная платформа для создания интерактивных игр без глубоких знаний программирования. Баскетбольная игра в этом конструкторе требует всего 5 ключевых элементов: спрайт мяча, корзины, фона, системы подсчета очков и управления. Начнем с того, что создадим проект с разрешением 480×360 пикселей – оптимальный размер для баланса между детализацией и производительностью.
Первый шаг – импорт спрайта мяча. Используйте встроенную библиотеку Scratch и выберите объект Basketball или нарисуйте собственный в редакторе. Убедитесь, что размер спрайта не превышает 50×50 пикселей, иначе он будет выглядеть непропорционально на фоне корзины. Для реалистичного движения задайте мячу два костюма: стандартный и «бросок» (сжатый по вертикали на 20%), чтобы имитировать деформацию при ударе.
Корзина – статичный объект, но с критически важной ролью. Нарисуйте ее в векторном редакторе Scratch с точными пропорциями: обруч шириной 60 пикселей, сетка высотой 40 пикселей. Разместите корзину в координатах (x: 180, y: 100) – это обеспечит достаточное пространство для траектории мяча. Добавьте невидимый спрайт-датчик размером 80×60 пикселей поверх обруча для регистрации попаданий.
Физика броска реализуется через блоки движения и сенсоров. Используйте формулу y = -5x² + 20x + 100 для расчета параболической траектории (где x – горизонтальное расстояние от игрока). Скорость мяча регулируйте переменной скорость_броска, начальные значения которой задайте в диапазоне 10–15 единиц. Для реализма добавьте случайное отклонение ±5% от траектории с помощью блока случайное число.
Система подсчета очков строится на переменных очки и промахи. При касании мячом датчика корзины увеличивайте счетчик на 2 очка, при касании пола – на 1 промах. Ограничьте игру 30 секундами, используя таймер из раздела Сенсоры. Для визуальной обратной связи добавьте эффект «вспышки» корзины (блок изменить эффект цвет на 50) при попадании и звук cheer из библиотеки Scratch.
Настраиваем сцену и фон для баскетбольной площадки

В Scratch выберите фон из библиотеки или загрузите собственный. Для реалистичности используйте шаблон «Basketball Court» из категории «Спорт» – он содержит разметку, кольцо и трехочковую линию. Если создаете фон вручную, нарисуйте прямоугольник 480×360 пикселей с зеленым покрытием (#2E8B57) и белыми линиями толщиной 3 пикселя. Кольцо разместите на высоте 180 пикселей от нижней границы, а щит – 20×100 пикселей с координатами (240, 120). Добавьте тень под кольцом (#3A3A3A) для объема.
Оптимизируйте фон для игровой механики. Разделите сцену на зоны: под кольцом (радиус 50 пикселей), трехочковая линия (дуга с радиусом 150 пикселей от центра кольца) и штрафная зона (прямоугольник 100×160 пикселей). Используйте прозрачные слои для коллизий – например, создайте спрайт «Кольцо» с костюмом в виде круга диаметром 30 пикселей и разместите его поверх фона. Это упростит проверку попаданий через блоки касается цвета или расстояние до.
Для динамики добавьте детали: трибуны (серые прямоугольники с градиентом), табло счета (спрайт с переменными «Очки» и «Время») и анимацию мяча при броске. Фон не должен отвлекать – избегайте ярких цветов и лишних объектов. Проверьте масштаб: мяч (спрайт диаметром 30 пикселей) должен визуально соответствовать кольцу. Сохраните фон в формате PNG с прозрачностью, если планируете накладывать дополнительные элементы.
Создаем спрайт мяча и программируем его движение

В библиотеке Scratch выберите спрайт мяча: перейдите в раздел «Спрайты», нажмите «Выбрать спрайт» и найдите объект Basketball (категория «Спорт»). Если стандартный вариант не подходит, нарисуйте собственный: создайте новый спрайт, выберите инструмент «Эллипс» с заливкой оранжевого цвета (#FF9500) и добавьте черные линии для швов – ширина 2 пикселя, радиус 40×40. Центр костюма установите точно в геометрический центр мяча, иначе движение будет смещаться.
Для реалистичного отскока используйте блоки движения и сенсоров. Начните с события «когда флаг нажат» и добавьте перейти в x: 0 y: 0, чтобы мяч появлялся в центре сцены. Далее – цикл всегда с условием: если касается края?, измените направление на 180 - направление и добавьте изменить y на -10 для имитации потери энергии при ударе. Скорость задайте переменной скорость_мяча (значение 7–10), обновляя координаты в каждом кадре: изменить x на (скорость_мяча * sin(направление)) и изменить y на (скорость_мяча * cos(направление)).
Добавьте гравитацию: создайте переменную гравитация (начальное значение 1.5) и в каждом цикле уменьшайте y на её величину. Чтобы мяч не проваливался сквозь пол, проверяйте условие y < -170 (нижняя граница сцены) и возвращайте его на уровень пола с уменьшением скорости на 20%: установить y в -170, затем установить скорость_мяча в (скорость_мяча * 0.8). Для управления направлением при броске используйте событие когда клавиша [пробел] нажата – задайте случайное направление от 45 до 135 градусов и сбросьте гравитацию в 0, чтобы мяч начал полёт.
Для взаимодействия с корзиной добавьте спрайт Hoop и настройте проверку касания: если мяч касается обода (касается [Hoop]?), уменьшите скорость на 30% и измените направление на противоположное. При попадании в кольцо (проверка y > 100 и y < 120) остановите мяч, спрячьте его и увеличьте счётчик очков. Оптимизируйте производительность: ограничьте частоту проверок условий до 30 раз в секунду с помощью блока ждать 0.03 секунд в конце цикла.
Добавляем корзину и определяем условия попадания

Создайте спрайт корзины из двух элементов: кольца (диаметр 60 пикселей, цвет #FF5733) и сетки (прямоугольник 40×80 пикселей, цвет #FFFFFF с прозрачностью 50%). Разместите кольцо на координатах (x: 180, y: 50), а сетку – под ним (y: 10). Используйте блок когда щёлкнут по зелёному флагу для фиксации позиции. Для реалистичности добавьте тень: нарисуйте полукруг 70×35 пикселей (#000000, прозрачность 30%) под кольцом с координатами (x: 180, y: 65).
Условия попадания определяются пересечением мяча с двумя зонами: кольцом и триггерной областью под ним. Создайте невидимый спрайт-триггер (прямоугольник 50×20 пикселей) на координатах (x: 180, y: 20). В коде мяча добавьте проверку:
| Условие | Действие |
|---|---|
касается [кольцо] И y скорость > 0 |
Установить y скорость = -y скорость * 0.7 (отскок) |
касается [триггер] И y скорость > 0 |
Увеличить счёт на 2, проиграть звук "swish", вернуть мяч в стартовую позицию |
Для точного попадания добавьте проверку горизонтальной скорости. Если x скорость > 1.5 или x скорость < -1.5 при касании триггера, засчитывайте только 1 очко – мяч "чиркнул" по кольцу. Используйте переменную последнее касание (значения: "кольцо", "триггер", "нет") для предотвращения двойного счёта. Сбрасывайте её через 0.3 секунды после любого касания.
Оптимизируйте физику: при попадании в триггер уменьшайте y скорость мяча до 0 перед возвратом в стартовую позицию. Это предотвратит "прыгающий" мяч после успешного броска. Для визуального эффекта добавьте анимацию сетки: при попадании временно уменьшайте её высоту до 60 пикселей на 0.2 секунды, затем возвращайте к 80 пикселям с помощью блока изменить размер на 20 и ждать 0.2 секунд.
Реализуем управление игроком с клавиатуры или мыши

Для перемещения игрока по площадке используйте блоки когда клавиша [стрелка вправо v] нажата и изменить x на [10]. Оптимальная скорость – 8–12 пикселей за кадр, чтобы движение выглядело плавным, но не слишком быстрым. Добавьте аналогичные блоки для стрелок влево, вверх и вниз, ограничив перемещение по Y-оси границами площадки (например, если y < 180 то изменить y на [10]). Для мыши примените перейти в [указатель мыши v], но зафиксируйте Y-координату, чтобы игрок двигался только горизонтально: установить y в [100] после перемещения.
Чтобы избежать рывков при смене направления, добавьте условие если не касается [край v] перед изменением координат. Для более точного управления мышью используйте переменную мышь_x и блок установить x в (мышь_x), предварительно округлив значение до целого числа (округлить (мышь_x)). Если игра поддерживает прыжки, привяжите их к пробелу: когда клавиша [пробел v] нажата + изменить y на [50] с последующим плавным снижением (повторять пока не y < 100 + изменить y на [-5]).
Прописываем систему подсчета очков и промахов

Для спрайта мяча добавьте блоки, фиксирующие попадание в корзину. Используйте условие касается [Корзина] внутри цикла всегда. При срабатывании условия увеличьте Очки на 2 (или 3, если реализуете трехочковую зону) и проиграйте звук "swish". Добавьте задержку в 0.5 секунды перед возвратом мяча в исходную позицию, чтобы избежать ложных срабатываний.
Промахи фиксируйте через отдельное условие. Проверяйте, коснулся ли мяч нижней границы сцены (y < -180) или таймер броска истек (если реализован). В этом случае увеличивайте Промахи на 1 и воспроизводите звук "miss". Сбросьте мяч в стартовую точку с координатами (0, -100).
- Для визуализации результатов разместите переменные на сцене. Перетащите их в верхний правый угол и уменьшите размер шрифта до 14px через настройки переменной.
- Добавьте анимацию при изменении счетчика: используйте блок
изменить эффект [цвет] на 25для переменнойОчкипри попадании, чтобы подчеркнуть успех. - Ограничьте количество бросков, если игра предполагает раунды. Создайте переменную
Броскии увеличивайте её при каждом запуске мяча. Завершайте игру при достижении лимита (например, 10 бросков).
Реализуйте бонусные очки за серию попаданий. Создайте переменную Серия и увеличивайте её на 1 при каждом попадании подряд. Если Серия > 2, добавляйте +1 очко к каждому следующему попаданию. Сбрасывайте Серия при промахе.
Для отладки добавьте временный блок говорить [Очки] и [Промахи] в спрайте мяча. Это позволит быстро проверять корректность подсчета без запуска полной игры. Удалите блок после тестирования.
Синхронизируйте подсчет с таймером, если игра ограничена по времени. Создайте переменную Время и уменьшайте её каждую секунду. При достижении 0 остановите все скрипты и выведите итоговый счет через блок спросить [Игра окончена! Очки: [Очки]. Промахи: [Промахи]] и ждать.
Добавьте возможность сброса статистики. Прикрепите к спрайту кнопки "Сброс" скрипт, обнуляющий все переменные (задать [Очки] значение 0 и т.д.). Разместите кнопку в нижнем левом углу сцены и сделайте её полупрозрачной (установить эффект [призрак] в 50) для ненавязчивости.
Добавляем звуковые эффекты и анимацию при броске

В Scratch звуковые эффекты привязываются к спрайтам через блоки из категории "Звук". Для броска мяча используйте звук "pop" из стандартной библиотеки или загрузите собственный файл в формате WAV/MP3. Оптимальная длительность звука – 0,3–0,5 секунды, чтобы не перегружать игру. Добавьте блок играть звук [pop] до конца в скрипт мяча сразу после команды изменить y на 10, чтобы звук воспроизводился в момент отрыва от руки персонажа.
Анимация броска требует последовательности костюмов для мяча. Создайте 3–4 костюма с разными фазами вращения (например, "мяч1", "мяч2", "мяч3") и переключайте их в цикле с задержкой 0,1 секунды. Используйте блок следующий костюм внутри цикла повторять [4] раз, чтобы мяч вращался во время полета. Для плавности добавьте блок ждать 0.1 секунд между сменами костюмов.
Для реалистичного эффекта "свиста" при полете мяча добавьте второй звук с плавным изменением высоты тона. Загрузите звук "swoosh" или создайте его в аудиоредакторе с частотой от 200 до 800 Гц. В скрипте мяча используйте блок изменить высоту тона на [5] перед воспроизведением звука и изменить высоту тона на [-5] после, чтобы создать эффект приближения и удаления.
Синхронизируйте анимацию с физикой броска. Если мяч движется по параболе (изменение координат x и y с разной скоростью), добавляйте блок повернуть в направлении [направление] перед сменой костюма. Это заставит мяч вращаться в соответствии с траекторией. Для корректировки угла используйте переменную угол_броска, которую задавайте при нажатии клавиши пробела.
Эффект попадания в корзину реализуйте через отдельный спрайт "сетка". При касании мяча с корзиной запускайте скрипт сетки: играть звук [swish] и анимацию из 2–3 костюмов с растяжением сетки. Добавьте блок показать перед анимацией и скрыть после, чтобы эффект появлялся только при попадании. Для звука используйте короткий ударный звук с частотой 1000–1500 Гц.
Оптимизируйте производительность: объедините все звуки в один файл с разными дорожками и используйте блок играть звук [файл] с [1] по [0.5] для воспроизведения нужного фрагмента. Для анимации броска ограничьте количество костюмов до 4 и используйте блок перейти к костюму [мяч1] перед началом нового броска, чтобы избежать рассинхрона.
Тестируем игру и исправляем ошибки в логике

Запустите игру в режиме полного экрана и проверьте столкновения мяча с корзиной. Если мяч проходит сквозь кольцо без срабатывания условия "касание цвета", уменьшите порог чувствительности блока цвет [#FF0000] касается [мяча]? на 5–10%. Альтернатива – добавьте второй проверочный цвет на внутренней стороне кольца. Запишите координаты мяча при успешном попадании: если Y-координата превышает верхний край корзины на 10 пикселей, скорректируйте условие y > [значение] в скрипте подсчета очков.
Протестируйте физику отскока мяча от пола и стен. При неестественном поведении (например, мяч "залипает" или отскакивает под углом 90°) замените блок повернуться на [15] градусов на задать направление [случайное от -30 до 30] после каждого касания поверхности. Для проверки используйте инструмент "показать переменные" и отслеживайте значения скорость_X и скорость_Y – они не должны превышать ±12 при стандартной силе броска.
Проверьте работу таймера и системы подсчета очков. Если очки начисляются дважды за одно попадание, добавьте флаг-переменную попадание_обработано и условие если [попадание_обработано = 0] перед увеличением счета. Сбросьте флаг через 0.2 секунды после попадания. Для таймера используйте отдельный спрайт с блоком ждать [1] секунд и уменьшением переменной время – это надежнее, чем встроенный таймер Scratch.
Проиграйте все возможные сценарии: бросок мимо корзины, попадание с разных углов, столкновение с краями сцены. Зафиксируйте случаи, когда мяч зависает в воздухе – это указывает на отсутствие условия если [y < -180] для сброса позиции. Для проверки границ сцены добавьте временный блок говорить [координаты: x: [x] y: [y]] в цикл движения мяча и отслеживайте выход за пределы ±240 по X и ±180 по Y.
Соберите обратную связь от 3–5 тестировщиков. Попросите их фиксировать: 1) случаи, когда мяч не отскакивает от препятствий, 2) некорректное начисление очков, 3) зависание игры. Для каждого пункта создайте отдельный список багов с приоритетами: критические (например, игра зависает) исправляйте через отладку скриптов в режиме пошагового выполнения, некритические (визуальные баги) – через правку костюмов или анимаций.
