Введение
В современном мире компьютерные игры стали неотъемлемой частью жизни. Они не только развлекают, но и способствуют развитию логического мышления, креативности и командной работы. В этой связи актуальным становится вопрос создания игр, доступных для широкой аудитории, включая школьников, которые смогут не только играть, но и самостоятельно создавать собственные игровые проекты.
Данная работа посвящена исследованию возможности интеграции Scratch 3 – простой и интуитивно понятной среды программирования, популярной в образовательной сфере, с LEGO MINDSTORMS EV3 – конструктором, позволяющим создавать роботов и автоматизировать процессы.
Целью исследования является разработка игры типа “Гонки”, где игроки управляют роботом LEGO MINDSTORMS EV3, программируя его движение и взаимодействие с игровой средой в Scratch 3.
Задачи:
Разработка алгоритмов управления LEGO MINDSTORMS EV3
Установить программное обеспечение для связи Scratch 3 и LEGO MINDSTORMS EV3
Настроить взаимодействие между Scratch 3 и EV3, обеспечивая передачу команд и данных.
Разработка игровой механики в Scratch 3
Проектировать и собрать два руля управления для LEGO MINDSTORMS EV3 из элементов конструктора
Разработать систему подсчета очков, времени прохождения трассы и определения победителя
Провести тестирование игры на соответствие требованиям и функциональности.
Оптимизировать алгоритмы и код программы для устранения ошибок и повышения производительности.
Провести игровое тестирование с привлечением нескольких игроков
Выявить преимущества и недостатки созданной игры.
В работе будут рассмотрены теоретические основы создания игр с использованием Scratch 3 и LEGO MINDSTORMS EV3, описаны этапы разработки, а также проведен анализ полученных результатов. Проект направлен на демонстрацию потенциала интеграции Scratch 3 и LEGO MINDSTORMS EV3 в сфере игрового дизайна и образования, способствуя развитию интереса к программированию и робототехнике у молодого поколения.
Глава 1. История возникновения среды программирования Scratch
Рождение Scratch: от идеи до реализации
Scratch - это не просто среда программирования, а целое движение, революционизировавшее подход к обучению программированию. Его появление стало результатом труда многих талантливых людей, но именно Митчелл Резник, профессор Массачусетского технологического института, стал ключевой фигурой в этой истории (Рисунок 1.1.1, Приложения). Резник всегда верил, что программирование должно быть доступно каждому, что оно может стать инструментом для самовыражения, творчества и решения проблем. В 2003 году он запустил проект “Lifelong Kindergarten” (Вечный детский сад), который посвятил изучению нового подхода к образованию, основанного на игре и творчестве. В рамках этого проекта и родилась идея Scratch[4].
Scratch был задуман как простой и интуитивно понятный инструмент, который позволил бы детям создавать свои собственные игры, анимации, музыку и другие интерактивные проекты. В место строгого синтаксиса и сложных команд Scratch использует визуальные блоки кода, которые можно соединять между собой как пазл. Первая версия Scratch была выпущена в 2007 году и сразу же привлекла внимание миллионов пользователей по всему миру. Она стала революцией в доступности программирования для детей. Scratch помог многим ребятам овладеть основами программирования и реализовать свои творческие идеи.
Scratch стал более чем просто средой программирования. Он превратился в живое сообщество людей, объединенных общим интересом к творчеству и технологиям. Пользователи Scratch могут делиться своими проектами, обмениваться идеями, учиться друг у друга и вместе создавать удивительные вещи.
Разработчики Scratch постоянно совершенствуют платформу, добавляя новые возможности, улучшая дизайн и делая ее еще более доступной для всех. Scratch станет еще более популярным в будущем, помогая всему новому поколению освоить программирование и реализовать свои мечты.
1.2. Развитие Scratch: эволюция платформы
С момента своего появления в 2007 году Scratch претерпел значительные изменения, эволюционируя в соответствии с потребностями пользователей и развитием технологий[5].
В начале Scratch представлял собой программу, которая устанавливалась на компьютер(Рисунок 1.2.1, Приложения). Однако в 2011 году была запущена онлайн-версия Scratch 2.0, которая стала доступна для всех пользователей с подключением к интернету. Переход в веб открыл новые возможности: Scratch стал доступен с любого устройства с доступом в сеть, что значительно расширило аудиторию и упростило использование платформы. Scratch 2.0 принес с собой значительные изменения в интерфейсе и функционале(Рисунок 1.2.2, Приложения).. Блоки кода были переработаны для более интуитивного использования, были добавлены новые блоки, расширяющие возможности программирования. Появилась поддержка новых языков программирования, в том числе и русского.
В 2019 году была выпущена Scratch 3.0, которая стала еще более современной и функциональной(Рисунок 1.2.3, Приложения).. Она получила новый дизайн, более яркий и интуитивный интерфейс. Scratch 3.0 адаптирована для работы на различных устройствах, включая планшеты и смартфоны. Она также получила поддержку новых технологий, таких как сенсорные экраны, камеры и микрофоны.
С каждым обновлением Scratch стает более мощным, гибким и доступным. Он продолжает превращать программирование в увлекательную и творческую деятельность для всех, независимо от возраста и опыта.
1.3. Влияние Scratch на мир программирования
Scratch оказал значительное влияние на мир программирования. Вот некоторые аспекты его воздействия:
Визуальная среда программирования: Scratch разработан специально для обучения детей и использует цветные блоки, понятные даже маленьким детям.
Популярность и востребованность: Scratch входит в 20 наиболее популярных и востребованных языков программирования по версии TIOBE.
Обучение основам программирования: дети осваивают логику, основы программирования и практикуют реализацию сложных алгоритмов.
Подготовка к изучению «взрослых» языков программирования: навыки, полученные при работе со Scratch, упрощают дальнейшее изучение текстовых языков программирования.
Международное сообщество: Scratch является крупнейшим сообществом для изучения программирования, где проводятся конкурсы и соревнования.
Глава 2. Создание игры по типу “Гонки” на Scratch 3.0 с использованием конструктора Lego Mindstorms EV3.
2.1. История появления гоночных компьютерных игр
Гонки – один из самых популярных жанров в мире компьютерных игр. Первые гоночные игры появились еще в 1970-х годах, когда компьютеры были большими и дорогими, а графика была крайне примитивной[3].
Одной из первых гоночных игр стала “Gran Trak 10” (1974), которая представляла собой симулятор гонок на трассе с простейшей графикой и управлением(Рисунок 2.1.1, Приложения).. В 1976 году появилась игра “Night Driver”, которая уже имела более реалистичную графику и звук.
В 1980-х годах гоночные игры стали более сложными и реалистичными. Появились игры с 3D-графикой, разнообразными трассами, разными машинами и более интуитивным управлением.
В 1990-х годах гоночные игры достигли нового уровня реализма. Игры стали более динамичными, с лучшей физикой и более детальной графикой. Появились онлайн-гонки, которые позволяли игрокам соревноваться друг с другом в реальном времени(Рисунок 2.1.2, Приложения)..
2.2. Особенности гоночных компьютерных игр
Гоночные игры характеризуются следующими особенностями:
Управление: Игроки управляют машиной с помощью клавиатуры, геймпада или руля. Управление может быть разным - от простого до очень сложного, с учетом физических характеристик машины.
Трасса: В гоночных играх игроки соревнуются на разнообразных трассах - от прямых участков до сложных извилистых дорог с поворотами, подъемами и спусками.
Физика: Современные гоночные игры используют сложные физические модели, которые делают поведение машин более реалистичным.
Режим игры: В гоночных играх может быть несколько режимов - гонки на время, гонки на очки, гонки на выбывание, онлайн-гонки.
Элементы игры: В гоночных играх могут быть разные элементы - бонусы, препятствия, оружие, искусственный интеллект противников.
2.3. Возможности Scratch для создания гоночных игр
Scratch – это идеальная среда для начинающих разработчиков, желающих попробовать себя в создании игр, особенно гонок[6]. Её простота и интуитивность позволяют создавать увлекательные проекты без глубокого знания программирования. Давайте рассмотрим, какие возможности Scratch предоставляет для этого:
1. Визуальное программирование: Scratch использует блоки кода, которые можно соединять между собой, как пазл. Это делает программирование более доступным и понятным для начинающих, особенно для детей. В контексте гоночной игры, такой подход позволяет легко создавать логику управления машиной, взаимодействия с окружающей средой и даже простой искусственный интеллект для противников.
2. Создание спрайтов: В Scratch можно создавать спрайты (персонажи), которые будут участвовать в игре. Это может быть машина, гонщик, препятствия или другие элементы гоночного мира. Например, можно создать спрайт гоночной машины с помощью инструментов рисования, либо загрузить готовый спрайт из библиотеки. Для создания трассы можно использовать фон Scratch или добавить спрайты с изображением дороги, деревьев и других элементов ландшафта.
3. Управление движением: Scratch позволяет управлять движением спрайтов с помощью следующих блоков:
“Переместиться в [число] шагов”: В гоночной игре этот блок можно использовать для движения машины вперед.
“Повернуться на [число] градусов”: В гоночной игре этот блок можно использовать для поворота машины влево или вправо.
“Изменить направление на [число] градусов”: В гоночной игре этот блок можно использовать для плавного поворота машины.
“Установить направление на [число] градусов”: Этот блок позволяет установить точное направление движения спрайта. В гоночной игре этот блок можно использовать для ориентации машины в нужном направлении.
“Скорость [число]”: Этот блок позволяет установить скорость движения спрайта. В гоночной игре этот блок можно использовать для управления скоростью машины.
4. События и условия: Scratch предоставляет возможность реагировать на различные события и условия, что делает игру более динамичной и интерактивной. Чаще всего используются следующие блоки:
“Когда [событие]”: Этот блок используется для реагирования на конкретное событие, например, нажатие на клавишу или столкновение с другим спрайтом. В гоночной игре этот блок можно использовать для управления машиной с помощью клавиш “стрелки”, либо для реагирования на столкновение с препятствием.
“Если [условие]”: Этот блок позволяет выполнить определенный код, только если условие истинно. Например, можно проверить, не столкнулась ли машина с препятствием, и если да, то замедлить ее скорость или изменить направление движения.
5. Звуковые эффекты: Scratch позволяет добавлять звуковые эффекты, что делает игру более увлекательной и живой. В гоночной игре можно добавить звук двигателя, скрип тормозов, сигнал сирены и другие эффекты.
6. Создание интерфейса: Scratch позволяет создавать простой и интуитивный интерфейс для игры. Это могут быть кнопки управления (например, кнопки “Вверх”, “Вниз”, “Влево”, “Вправо”), индикаторы времени, счетчики очков и другие элементы.
2.4 Создание гоночной игры на Scratch 3.0 с использованием Lego Mindstorms EV3
Для управления виртуальной машиной в гоночной игре с помощью Lego Mindstorms EV3 можно использовать руль, собранный из конструктора[7]. В этом руле будет использоваться мотор, который будет поворачивать руль, и два датчика касания, которые можно использовать для старта и торможения.
Для работы с Lego Mindstorms EV3 в Scratch 3.0 нужно использовать специальное расширение. Это расширение предоставляет доступ к датчикам и моторам Lego Mindstorms EV3.
Возможности расширения:
Управление моторами: С помощью этого расширения можно управлять моторами Lego Mindstorms EV3 из Scratch 3.0. Можно установить скорость вращения мотора, направление вращения и задать другие параметры.
Чтение данных с датчиков: Расширение позволяет считывать данные с датчиков Lego Mindstorms EV3, таких как датчик касания, датчик расстояния, датчик цвета и других.
Чтобы соединить Scratch 3.0 с Lego Mindstorms EV3, необходимо скачать и установить некоторые дополнительные компоненты:
Scratch 3.0: Скачайте и установите Scratch 3.0 с официального сайта.
Scratch 3.0 Extension for Lego Mindstorms EV3: Скачайтеиустановитерасширение Lego Mindstorms EV3 для Scratch 3.0. Его можно найти на официальном сайте Scratch.
Lego Mindstorms EV3 Bluetooth Driver: Скачайте и установите драйвер Bluetooth для Lego Mindstorms EV3. Он позволит Scratch 3.0 подключаться к Lego Mindstorms EV3 по Bluetooth.
Глава 3. Практическая часть.
3.1. Строение руля
В рамках практической части проекта были созданы два варианта руля для управления виртуальной машиной в гоночной игре на Scratch[1].
Руль №1: Средний мотор. Средний мотор был прикреплен к основе так, чтобы он мог вращать руль[2]. Два датчика касания были прикреплены к рулю с двух сторон так, чтобы они замыкались при повороте руля(Рисунок 3.1.6, Приложения). Для придания рулю более реалистичного вида были использованы гусеницы от конструктора Lego Mindstorms EV3(Рисунок 3.1.5, Приложения).. Гусеницы были прикреплены к основе руля, чтобы имитировать обод руля(Рисунок 3.1.6, Приложения).
Руль №2: Большой мотор[8].Конструкция основы была аналогична первому рулю(Рисунок 3.1.1, Приложения).
Схема подключения:
Мотор был подключен к порту “A” на Lego Mindstorms EV3.
Первый датчик касания был подключен к порту “1”.
Второй датчик касания был подключен к порту “2”.
Функциональность:
Первый датчик касания используется для старта и ускорения виртуальной машины в игре(Рисунок 3.1.2, Приложения)..
Второй датчик касания используется для торможения виртуальной машины в игре.
Управление:
Положение виртуальной машины в игре зависит от угла поворота мотора. Угол поворота рассчитывается благодаря энкодерам, встроенным в мотор(Рисунок 3.1.5, Приложения)..
В Scratch 3.0 с помощью расширения Lego Mindstorms EV3 можно считывать данные с энкодеров мотора и передавать их в игру для управления виртуальной машиной.
3.2. Описание программы для гоночной игры
Программа для гоночной игры на Scratch 3.0 с использованием Lego Mindstorms EV3 получилась довольно объемной, но интересной. В ней присутствуют спрайты машины, деревьев, камней и ям, которые создают атмосферу гоночной трассы. Для создания иллюзии движения машины создан спрайт разметки, который клонирует сам себя и движется вниз по оси Y до тех пор, пока не достигнет значения “-180”. Это создает ощущение, будто машина едет по дороге, а окружающая среда проносится мимо[9].
Управление машиной осуществляется с помощью Lego Mindstorms EV3, подключенного к Scratch 3.0 через специальное расширение. Для управления движением используются две переменные: “Скорость езды прямо” и “Боковая скорость”. Первая отвечает за скорость движения машины вперед, а вторая - за скорость поворота вправо или влево. Спрайты с препятствиями (камни и ямы) также клонируют сами себя и появляются в случайном порядке на трассе, создавая неожиданные препятствия для игрока. Спрайты деревьев, создающие иллюзию движения фона, движутся сверху вниз по оси Y.
Программа взаимодействует с Lego Mindstorms EV3 через специальные блоки, которые позволяют считывать данные с датчиков касания и управлять мотором. Данные с энкодера мотора используются для расчета угла поворота машины в игре. Таким образом, игрок может управлять машиной с помощью руля, созданного из Lego Mindstorms EV3, и видеть, как виртуальная машина двигается на экране.
Игра предлагает захватывающий вызов - достичь максимальной скорости, проезжая по трассе, усеянной препятствиями. Игрок должен мастерски управлять машиной, избегая столкновений с камнями и ямами, чтобы увеличить свой рекорд скорости и почувствовать настоящий драйв гонок. Чем быстрее вы едете, тем больше очков получаете!
Заключение
Разработка гоночной игры на Scratch 3.0 с использованием Lego Mindstorms EV3 стала увлекательным и познавательным проектом. Мы убедились в том, что Scratch 3.0 – это простое и интуитивное среда для создания игр, а Lego Mindstorms EV3 – отличный инструмент для взаимодействия с компьютером и создания увлекательных игровых устройств. Scratch 3.0 отлично подходит для начинающих разработчиков и идеален для создания простых, но захватывающих игр, а Lego Mindstorms EV3 - мощный инструмент для создания устройств и взаимодействия с компьютером, который может быть использован для управления играми на Scratch 3.0. Совмещение Scratch 3.0 и Lego Mindstorms EV3 открывает широкие возможности для создания интерактивных и увлекательных проектов. В будущем мы планируем улучшить нашу игру, добавив новые функции, например, разнообразные трассы, противников, звуковые эффекты и систему подсчета очков. Также мы хотим исследовать возможности использования других датчиков Lego Mindstorms EV3, таких как датчик расстояния или датчик цвета, в нашей игре. Мы уверены, что проект будет развиваться дальше и принесет нам новые знания и опыт в области программирования и робототехники.
Список использованных источников:
Курс «Машины и механизмы», курс «Основы робототехники», Школа интеллектуального развития «Мистер Брейни», - Режим доступа - https://vk.com/mrbrain_tmn;
Филиппов С.А. Робототехника для детей и родителей, - СПб.: Наука, 2013. 319с;
https://www.playground.ru/misc/news/evolyutsiya_gonochnyh_igr-292403
https://www.progkids.com/blog/istoriya-scratch
https://kursy.ru/znaniya/programmirovanie/chto-takoe-scratch/
https://ru.scratch-wiki.info/wiki/Расширения
https://wikiscratch.miraheze.org/wiki/Дополнения_для_Скретча
https://robotbaza.ru/blogs/blog/vse-o-mindstorms-education-ev3
https://scratch.mit.edu/
ПРИЛОЖЕНИЯ
Рисунок 1.1.1 Основатель Scratch Рисунок 1.2.1 Scratch 1
Рисунок 1.2.2 Scratch 2 Рисунок 1.2.3 Scratch 3
Рисунок 2.1.1Pole Position Рисунок 2.1.2Forza
Рисунок 3.1.1 Руль общий вид Рисунок 3.1.2 Датчик 1 для старта
Рисунок 3.1.3 Мотор для управления рулем Рисунок 3.1.4 расположение датчиков
Рисунок 3.1.5 Руль со средним мотором Рисунок 3.1.6 Руль и игра
Рисунок 3.2.1 Игра общий вид Рисунок 3.2.2 Программа для машины
Рисунок 3.2.3 Программа для разметки Рисунок 3.2.4 Программа для деревьев
Рисунок 3.2.4 Программа для препятствий