Как сделать притяжение в скретч
Как сделать прыжок в scratch
Проводя очередные занятия по детскому программированию на базе среды разработки Scratch у двух учеников обучающихся на курсе возникли сложности с программированием прыжка у персонала. Так как код для действия персонажа не является очевидным и простым, в статье я опишу полный цикл программирования обычного прыжка. Описанный ниже код позволит герою прыгать только вверх, а не вверх и вперед. В конце материала будет указанна ссылка на программирование запрыгивания на отдельный спрайт, а так же написание кода для прыжка вверх и вперед.
ВНИМАНИЕ!
Разрабатывая бесплатный курс по детскому программированию в scratch 2 я подготовил 4 варианта прыжка для персонажа с кодом разного уровня сложности. Описание этой статьи относится к 3 уровню сложности. Более простые варианты запрограммирования прыжковых навыков объекта смотрите по ссылкам ниже:
Так же рекомендую ознакомиться с бесплатными уроками по Скретч 2 на другие тематики в разделе Детское программирование (перейти). Ну и конечно я буду очень благодарен за финансовую помощь! Ее вы можете оказать переводом на СберБанк Онлайн по телефону 8-977-915-25-76 или на Яндекс.Деньги по кнопке слева!
Пошаговая инструкция по программированию прыжка у персонажа в Скрейтч
Шаг первый. Начнем с управления и разместим программный код под блоком начинающем работу после нажатия на зеленый флажок. Далее заведите переменную (заходим в блок Переменные), переназовите ее и задайте значение равное 0 (обнуляем значение переменной перед запуском программы), как показано на рисунке ниже:
Шаг третий. Назначаем кнопку для прыжка через условие в команде Если … То …
Шаг четвертый. Задаем значение переменной — Скорость прыжка равное 20 (с этим параметром можно поиграться и посмотреть как измениться скорость прыжка спрайта при изменении значения переменной)
Шаг пятый. Определяем высоту прыжка персонажа в игре и делаем это за счет добавления цикла повторить несколько раз. Рисунок ниже.
Шаг шестой. Добавляем программный код, который изменяет положение персонажа игры по высоте
Для полного осознания того, какой элемент кода для чего служит попробуйте поменять значения указанные в программе. Постарайтесь понять логику описывающую прыжок. Перед переходом к следующим статьям постарайтесь самостоятельно описать прыжок вверх и вперед, а так же написать код для запрыгивания на другой спрайт.
Игровая механика Прыжок (подпрыгивание) в Scratch
Примеры игр с использованием механики прыжка (чтобы персонаж подпрыгнул, надо нажать на клавишу Пробел):
Дополнительные уроки, которые могут помочь в создании этой игры, перечислены здесь.
Открыть проект на сайте Scratch можно по адресу https://scratch.mit.edu/projects/104584635/
1. Первый простой способ реализации подпрыгивания персонажа игры
Как сделать так, чтобы по нажатию на клавишу персонаж подпрыгивал, смотри в уроке и делай самостоятельно:
2. Улучшаем прыжок
После этого улучшения может понадобиться создать анимацию, как в проекте «Кот гуляет с мячом», урок о котором можно найти здесь.
3. Второе улучшение прыжка
Делаем так, чтобы в состоянии прыжка кот не двигал лапами, словно идет по воздуху.
Дополнительные уроки:
4. Способ 2 реализации прыжка: на основе гравитации
Используя понятие гравитации, реализуем более универсальный алгоритм прыжка персонажа. Это, конечно, неточная физическая модель, но в игровой физике очень многое делается похожим на нашу реальность, но не обязательно путем точного применения физических законов.
Делитесь своими проектами, задавайте вопросы в комментариях.
Напиши вопрос или комментарий
Программирование игр
Новости
22.09.2021 Урок 16. Черепашья графика, инструмент «Перо» дополнен инструкцией по работе с Пером в Scratch 3.0 и примерами творческих проектов.
31.08.2021 29 августа в Минске прошла Первая Международная конференция «Про разработку игр: школьникам, учителям, родителям» EduGame 2021. Публикуем итоги конференции и списки победителей.
1.06.2021 Публикуем материалы (задания и блоки для распечатки) Scratch-разминка
В помощь учителю
Обучение детей основам создания компьютерных игр на языке программирования Scratch
Учебное пособие для учителей и родителей
«Entry Level Programming with Scratch»
новый бесплатный курс для учителей и родителей от ЕПАМ
Как сделать любой школьный урок веселее с помощью Scratch?
Язык программирования Scratch создавался специально для детей. Но это вовсе не значит, что он пригодится только на уроках информатики!
Scratch задумывался как простой и наглядный язык программирования для знакомства учеников младших классов с основами программирования. Его создатель Митчел Резник считает, что активное познание — познание через моделирование окружающего мира — является наиболее эффективным способом обучения. Так мы учим наших детей создавать и трансформировать мир вокруг себя, не останавливаясь на уровне «обычного пользователя».
Программирование на Scratch происходит путем перемещения разноцветных блоков, и соединения их как в конструкторе Лего. Программа получается очень наглядной и выглядит как красивый алгоритм, чем, по сути, она и является.
Несмотря на кажущуюся простоту. Scratch позволяет создавать достаточно сложные проекты с применением переменных, списков, циклов, условных операторов и многого другого из арсеналов «взрослых» языков программирования. Заниматься программированием на Scratch можно уже с 7 лет. Даже не владея понятиями о переменных и координатной плоскости, ребенок сможет сделать свои первые проекты.
Обычно Scratch не выходит за пределы кабинета информатики, однако этот язык программирования имеет такие большие возможности, что позволяет использовать его и в рамках других школьных дисциплин. Язык Scratch является доступнейшим средством моделирования физических явлений. Может наглядно представить законы математики.
С примерами применения Scratch на уроках физики, математики, географии и даже литературы вы и познакомитесь в этой статье.
Реактивная математика
Как известно, в наш век повсеместного распространения телефонов со встроенными калькуляторами устный счёт у детей «не в почёте», однако, выполнение в уме математических операций ещё со времен древней Греции считалось отличной гимнастикой для ума.
Ниже приведён проект на Scratch, целью которого является тренировка способностей к устному счёту. Задача ученика — решить как можно больше примеров за отведённый промежуток времени.
В данном проекте нужно перемножить как можно больше чисел от 2 до 12 за 30 секунд. После того, как дети вдоволь наиграются, им можно дать задание немного попрограммировать и изменить условия задачи — например, умножать числа от 2 до 20. При этом интервал времени нужно соответственно увеличить. Затем можно добавить операци деления, вычитания и сложения. Это позволит «размять мозги» ещё качественнее. Так на одном уроке дети и тренируют скоростной счёт, и с удовольствием кодят. На основе подобных проектов можно проводить соревнования по «спортивной математике» в рамках образовательного заведения, или на вечеринке, в веселой компании, между шахматами и нардами.
Наглядная физика
Следующий проект моделирует простейший закон физики — полёт тела по параболе. Это позволяет вместо скучных уравнений представить полёт в виде небольшого мультфильма. Изменяя угол наклона и начальную скорость снаряда, ученик может смоделировать различные ситуации и почувствовать, как работает закон.
Интерактивная география
Ещё один пример использования Scratch — создание тестов и викторин. Это может пригодиться на географии, истории, биологии… Вот пример викторины по географии. В ней всего десять вопросов о столицах государств.
Изменить этот проект совсем несложно. Достаточно изменить вопросы и правильные ответы. Это под силу даже ученикам начальных классов.
Поэтическая викторина
Следующий пример — мой любимый. Scratch можно использовать даже на уроках литературы!
В этом проекте ученику предстоит проверить, как он выучил стихотворение. Помимо знания самого стихотворного произведения потребуется умение быстро читать и анализировать прочитанное. Три персонажа этого проекта будут произносить по одной строке стихотворения, причём правильную сроку произносит только один из них, а двое других — с ошибками. Ученик должен быстро прочитать три варианта и кликнуть на персонажа, который говорит верно.
Доработать или изменить этот проект достаточно сложно. Это потребует не только умения программировать, но и умения сочинять стихи. На основе нескольких подобных проектов можно устроить весёлое литературное соревнование между учениками.
Как видите, Scratch помогает по-новому взглянуть на учебный материал. Scratch даёт возможность совмещать занятие программированием с изучением чего угодно. При разработке викторины ученик твёрдо запомнит ответы на вопросы. При создании физической формулы из разноцветных блоков формула станет понятной и почти родной.
Чтобы приступить к использованию Scratch, достаточно зайти на офицальный русифицрованный сайт. А множество идей по использованию Scratch можно найти на сайте scrath4russia.
5 октября 2015, 15:00
Мнение автора может не совпадать с позицией редакции.
Scratch для «продвинутых»
Клонирование и переменные в Scratch
Моему ученику нравилась игра — «Зомби против растений». И ему было интересно самому запрограммировать её. Давайте вспомним как данная игра работает? С правой стороны у нас есть шеренга растений, которая расстреливает приближающихся зомби.
Есть множество решений данной задачи, но на мой взгляд более элегантное решение — задействовать минимально возможное количество спрайтов, т.е. использовать клонирование.
Как сделать так, чтобы у каждого отдельного клона был собственный уровень жизни? Что выбрать переменные или списки? Сделали попытку использовать списки, но после более детальной проработки поняли, что данная структура данных не помогает решить проблему. У переменных и списков, в Scratch есть 2 типа видимости для каждого типа данных — это «для всех спрайтов» или «только для этого спрайта». Пришлось проверять область видимости. Начали мы с переменных.
Дойдя до рабочего варианта переменной с областью видимостью «только для этого спрайта». В классических языках программирования такой тип видимости называют — локальным или приватным в зависимости от контекста.
Оказывается, что если эта переменная с данной областью видимости используется в клоне, то в клоне создается экземпляр переменной, принадлежащий конкретному клону и который используется для внутренних вычислений/работы клона. В нашем случае, у каждого клона есть своя «жизнь». Если стало интересно, то советую обратиться к справочнику. А вот картинка, которая показывает, как спрайты или клоны работают с переменными разных типов видимости.
Переменная с областью видимости «для всех спрайтов» (рисунок слева) — одна на всех. Кстати, здесь вы можете с детьми посмотреть работу с критическими секциями и что такое гонка за ресурс. А если область видимости переменной — «только для этого спрайта», то у спрайта и у его клонов появляется собственная переменная с тем же именем, с которой они работают (рисунок с права). И клоны не имеют доступа к переменной оригинала и переменной другого клона.
Это стало неожиданным и приятным открытием свойств Scratch для создания подобных алгоритмов.
ВАЖНО: Переменная — это очень мощный инструмент настоящего программиста, поэтому я сразу учу детей правильному именованию переменных, так как этот навык поможет им в проектах разной сложности.
Имена объектов как их идентификаторы
ВАЖНО: все переменные с зоной видимостью «только для этого спрайта».
Данный инструмент для меня стал совсем неожиданным. Давайте начнем с истории о том, как мы с учеником наткнулись на данную особенность языка. Мой ученик решил, создать игру с «искусственным интеллектом». Игра представляет звездные войны на космических кораблях и у игрока есть возможность управлять одним кораблем, в то время как противники гоняются за вами и за друг другом. Чтобы они могли преследовать вас или друг друга, им нужно как-то принимать решение о том, кого преследовать. Данную задачу можно решить в лоб и задать очередность преследования кораблей, но игра потеряет свою интеллектуальность и быстро наскучит. Поэтому ученик решил настроить интеллект таким образом, чтобы корабли с интеллектом преследовали ближайшего противника. Давайте посмотрим, как он начал решать данную задачу.
На мой взгляд хорошее решение для создания быстрого прототипа. Но какие ограничения здесь есть? Первое, усложнение кода по мере добавления новых кораблей. Следовательно, сложность кода повышается и не исключены мутации кода из-за усложнения. Время поиска ошибки и отладки алгоритма будет расти. И конечно, никто не отменял такую прикольную метрику, как старение кода (advance level SW Development). Что же делать? А делать необходимо следующее, нужно сделать обобщеный алгоритм, который будет динамично приспосабливаться к увеличению или уменьшению количества кораблей.
Для данного алгоритма нам и понадобиться свойство языка — имя как идентификатор объекта. Пришло время больших изменений и здесь вы, как учитель, можете рассказать про такое явление как рефакторинг. Это последовательное изменение кода, улучшение его структуры и его оптимизация. А главное, чтобы каждое изменение не ломало работу программы, и объем изменений тоже должен очень аккуратно подобран. Слишком много изменений — плохо, слишком мало — долго. Сформированный навык рефакторинга даст преимущество и эффективность работы программиста. Но для формирования навыка нужно работать головой, а не просто тыкаться. У меня получилось сделать 4 изменения в первоначальной программе и результат не изменился.
Заметьте, что я еще не удалил блоки, а оставил их. Зачем? Потому, что если что-то пойдет не так, мы можем вернуть предыдущий вариант, начав все заново. Но как только я проверю правильность выполнения обновленного скрипта, я сразу же их удалю, чтобы не отвлекаться на них в последующем.
Заметили? Сейчас в блоке «повернуться к …» стоит переменная и эта штука работает. Т.е. мы минимальными усилиями проверили, что данный подход работает. Это просто круто. Теперь мы можем начать писать алгоритмы, которые позволят определять объект преследования ближайшего корабля.
Что нам пригодится? Это из структур данных — это переменные и списки. Из алгоритмов — это нахождение минимального числа (расстояния) в списке. Еще нам необходим алгоритм, который определит имя объекта для преследования по минимальному расстоянию.
Сейчас будет написано много кода. Но для того, чтобы потом не захлебнуться и не запутаться в куче скриптов, нам необходимо использовать еще одну классную функцию, а именно создание собственных блоков. Эта функция очень мощная, но ее редко используют школьники, да и некоторые программисты, а ведь она позволяет создать понятный с первого прочтения алгоритм программы. Кстати, можете почитать про приемы создания понятного кода в книге Мартина Фаулера «Рефакторинг. Улучшение существующего кода»
Как и перед любым масштабным строительством нам необходимо все спланировать. Давайте спланируем в каком порядке будем разрабатывать блоки:
Для того, чтобы создать обобщенный алгоритм нам чем-то нужно пожертвовать, например, оригинальными именами спрайтов, придется их стандартизировать и получим следующий расклад.
И теперь мы готовы описать 1 часть программы. Все пишем для 1-ого корабля. Запускаем отдельно данный скрипт и смотрим результат. Поехали!
Если мы добавим новый корабль, нам нужно изменить в данном алгоритме лишь одну циферку. Клево? Клево!
Погнали дальше. А давайте научим его 2 алгоритму. Смотрим, что получилось. Это сразу конечный результат со вспомогательными функциями.
Ура! Работает. Проверить это можно следующим образом, должен быть обязательно 0 одним из значений в списке расстояний. Если у вас это не так, ищите ошибку.
Едем дальше! Поиск минимального расстояния. Заметили, что расстояние всегда положительно. И всегда будет минимальное число — 0. Ай-я-яй! Вывод — искать минимум, но не ноль. Можете попробовать свои силы и оптимизировать код самостоятельно, чтобы не делать расчет расстояния от корабля 1 до корабля 1 (это не опечатка).
Обучаем спрайт новой функции и получаем.
Не забываем проверять! Для этого можно даже остановить игру и запустить отдельный скрипт.
Мы написали все, что необходимо, теперь главное правильно использовать данные функции.
Если у вас все работает правильно, то вы должны увидеть следующее:
Заметили, что корабль с «искусственным интеллектом» разрывается между разными противниками. Вы можете усовершенствовать программу и усложнить принятие решения. Например, если у преследуемого корабля осталось мало жизни, то он добивает его, а если он нашел, ближе и с еще меньшим здоровьем, то добить сначала слабейшего.
Кстати, в данной программе можно уменьшить количество действий и усовершенствовать алгоритмы. Попробуйте свои силы. Взять данную программу можно здесь.
Подводим итоги
Вот на таких кейсах я узнал, как Scratch дает возможность ученикам быстрее освоить множество реальных техник программирования. На нем можно рассказывать про работу критических секций, про обобщенные алгоритмы, про переменные и их области видимости, про создание собственных блоков и структурирование кода. А также на данном языке можно рассказывать про профессиональные навыки, например, рефакторинг.
Это лишь малая часть инструментария программиста, но она являет очень важной. А в Scratch это объяснить становится чуточку легче.
Как создать игру Among Us на Scratch. Уроки программирования для детей
Авторизуйтесь
Как создать игру Among Us на Scratch. Уроки программирования для детей
IT-сфера давно стала неотъемлемой частью жизни не только взрослых, но и детей. С ранних лет они учатся разрабатывать самые простые программы и игры, а помогают им в этом специальные среды программирования.
Сегодня существует огромное количество сред, но наибольшей популярностью пользуется Scratch. Она разработана специально для детей и начинающих программистов. Среда Scratch отличается простотой и широким набором функций, которые помогают делать первые шаги в программировании.
Работать в Scratch можно уже с 8 лет. Процесс программирования напоминает сборку конструктора LEGO. Все команды похожи на блоки, которые перемещаются и примагничиваются один к одному. Блочный код позволяет создавать персонажей, управлять ими, добавлять звук, обмениваться сообщениями и выполнять огромное количество других операций.
Scratch знакомит детей с азами программирования. Кроме того, он развивает логическое мышление, учит решать сложные задачи и находить ответы на самые сложные вопросы.
Scratch — это онлайн-среда, то есть вам не нужно устанавливать на свой компьютер никакие программы и приложения. Достаточно открыть браузер, зайти на официальный сайт и зарегистрировать там личный кабинет. Здесь вы можете не только создавать, но и публиковать свои игры, чтобы в них могли сыграть и другие пользователи.
Главные особенности Scratch
Чем привлекает пользователей платформа? Во-первых, это интуитивно понятный интерфейс. Даже неопытный пользователь сможет освоить её в самые сжатые сроки.
Во-вторых, красочный дизайн. Он вдохновляет самых юных программистов создавать свои проекты и настраивает на рабочий лад.
В-третьих, это возможность делиться игрой и получать комментарии от других пользователей. Это мотивирует искать новые идеи и работать дальше, даже если возникают какие-либо трудности.
Вовлекать детей в программирование лучше всего через игры. Такой подход делает процесс обучения более интересным и мотивирующим. Несмотря на свою кажущуюся простоту, онлайн-платформа Scratch позволяет создавать игры практически любых жанров: шутеры, стратегии, симуляторы и многие другие.
Также Scratch позволяет создавать клоны популярных игр. Мы заново спроектировали часть игры Among Us и подготовили для вас подробную инструкцию по её созданию. Также мы подготовили полный видеоурок, в котором рассказали обо всех особенностях разработки игры (видео вы найдете в конце статьи).
Добавление материалов
На первом этапе разработки игры необходимо подготовить материалы: в основном это спрайты (картинки). Нам понадобятся изображения главного героя, а также фоновые заставки:
Вы можете скачать наши материалы или нарисовать самостоятельно в графическом редакторе на самой платформе.
Мы запрограммируем изменение фонов и игровых карт, движения персонажа и выполнение одного задания — командиру необходимо починить проводку.
Открываем новый проект и добавляем все спрайты, нажав на кнопку «загрузить спрайт». Чтобы заполнить всю игровую сцену, изображения нужно растянуть до максимального размера (карта у нас 731). На следующем этапе нарисуйте желтый кружок — это станет точкой отсчёта, то есть с данного места командир будет начинать свое задание.
Также мы изменим размер героя, чтобы он был пропорционален карте (25). Каждому фону дается свое название — так вы сможете легко ориентироваться между ними.
После всех этих операций мы приступаем непосредственно к самому программированию.
Заставка
Составляем код: когда зеленый флажок нажат, перед вами будет появляться заставка. Она должна задерживаться на две секунды, после чего переключаться на обычный фон и передавать сообщение «начало».
Карта
Когда флажок нажат, фона не видно, поскольку появляется заставка. Но как только фон получает команду «начало», то он снова показывается и переходит в начальное положение: x=0, y=0. После того как карта становится видимой, она постепенно перемещается на задний план.
После всех манипуляций наш герой может перемещаться по карте. Однако она пока не чувствует стены. То есть, если на пути героя встречается преграда, он проходит сквозь неё. Чтобы устранить это, к каждой клавише нужно добавить следующую команду: при столкновении с чёрным цветом главный герой будет изменять координаты на противоположное значение.
На завершающем этапе необходимо сделать так, чтобы игровая карта сменялась на фон с заданием. Для этого необходимо добавить ещё один код: когда мы будем получать задание, то карта будет прятаться. Таким образом у вас не возникнет никаких проблем с игровой картой.
Член экипажа
Сначала нужно добавить тот же код, что и у карты: при нажатии на флажок герой будет прятаться, а при получении сообщения «начала» появляться на экране.
Теперь необходимо сделать анимацию для нашего персонажа. Для этого во вкладке «костюмы» добавьте несколько вариаций движения нашего члена экипажа. Необходимые спрайты можно найти в папке вместе с другими материалами.
Теперь пропишем код: при нажатии на клавиши навигации у героя будут меняться костюмы. В противном случае будет казаться, что мы просто стоим на месте. В блоках «внешнего вида» есть вкладка «изменить костюм на». Её и необходимо выбрать. Добавьте небольшие паузы по 0,2 секунды между сменой костюма, чтобы процесс «переодевания» не происходил слишком быстро.
Когда наш герой будет касаться жёлтого кружка, он будет переходить на фон с заданием. Поэтому необходимо прицепить ещё одно условие: если спрайт касается желтого цвета, то мы передаем новое сообщение «задание». После этого наш герой прячется, и игрок переходит на фон с заданием.
Очень важно, чтобы, когда персонаж закончит выполнять задание и вернётся обратно на карту, он не продолжал стоять на жёлтом кружке. Поэтому необходимо прописать, что после возвращения наш герой переместился по оси y на 15 шагов. Зацикливаем эти действия, чтобы они всегда повторялись.
Задание с проводами
Перейдём на фон задания. В графическом редакторе Scratch необходимо нарисовать спрайты (цветные прямоугольники). Из этих прямоугольников и будут торчать провода.
Теперь необходимо написать программу для этих спрайтов. Сразу же отметим что, когда флажок будет нажат, спрайт будет прятаться, а когда вы будете получать «задание», то он будет переходить на координаты х=-212, y=-116. На следующем этапе уменьшим размер спрайта до 40%.
За все наши провода будет отвечать одна переменная. Создаем её и даём ей имя «провода».
В самом начале её значение будет равняться нулю, а когда мы присоединим первый провод, то её значение изменится на 1.
Теперь нам нужно нарисовать путь от начала провода до конца. Для этого необходимо использовать расширение «перо».
Создаём код. При нажатии на указатель мыши перо будет меняться: оно будет менять свой цвет на жёлтый, опускаться и менять размер на 15.
Когда вы будете касаться второго спрайта, то есть второго конца провода, то вам будет начисляться 1 очко. После того как провод будет соединён, перо останавливается. Обратите внимание, что весь скрипт пера зациклен.
Продублируйте спрайты начала и конца провода и измените цвет на красный, синий и фиолетовый. Они нужны нам для других проводов. Немного измените скрипт, чтобы правильно указать координаты и названия всех спрайтов.
Сыграть в наш Among Us, посмотреть код и другие важные моменты можно на официальном сайте Scratch.
В последнем видеоролике мы улучшили карту, добавили индикатор заданий, звуковые эффекты и новые задания с астероидами. Если у вас получится улучшить игру, добавить новые уровни, то присылайте нам ссылки на ваши игры в комментариях. Мы посмотрим все сообщения и оценим вашу работу.
Если же вы хотите получше изучить Скретч и создать несколько новых игр, то посмотрите другие уроки на нашем канале YouTube. Попробуйте создать игры по мотивам Minecraft или Brawl