Оглавление:

Ремейк Battle City для GameGo с Makecode Arcade: 4 шага (с изображениями)
Ремейк Battle City для GameGo с Makecode Arcade: 4 шага (с изображениями)

Видео: Ремейк Battle City для GameGo с Makecode Arcade: 4 шага (с изображениями)

Видео: Ремейк Battle City для GameGo с Makecode Arcade: 4 шага (с изображениями)
Видео: Battle City Remake on GameGo with Makecode Arcade 2024, Ноябрь
Anonim
Image
Image

GameGo - это портативная игровая ретро-консоль, совместимая с Microsoft Makecode, разработанная TinkerGen STEM education. Он основан на чипе STM32F401RET6 ARM Cortex M4 и предназначен для преподавателей STEM или просто людей, которым нравится создавать ретро-видеоигры. Вы можете следовать этому руководству и попробовать игру в симуляторе Makecode Arcade, а затем запустить ее на GameGo.

В этой статье мы собираемся попробовать свои силы в воссоздании классического танкового шутера Battle City, изначально созданного и опубликованного в 1985 году компанией Namco для Nintendo Entertainment System (NES). В оригинальной игре игрок управляет танком и стреляет снарядами, чтобы уничтожить вражеские танки. Танки противника пытаются уничтожить базу игрока, а также сам танк игрока. Мы внесем некоторые изменения в игровой процесс, чтобы лучше приспособить к практике блочного программирования с помощью GameGo, но наш римейк по-прежнему сохранит большое сходство с оригинальной игрой. Давай начнем!

Запасы

GameGo

Шаг 1: Наше Альтер-эго - Желтый Танк

Наше Альтер-эго - Желтый Танк
Наше Альтер-эго - Желтый Танк

Откройте Makecode Arcade на https://arcade.makecode.com/ и щелкните новый проект. Приступим к созданию нашего альтер-эго желтого резервуара. Выберите Set mySprite to sprite of kind player block и нарисуйте желтый танк, обращенный вверх, в качестве нашего начального спрайта, поместите этот блок внутрь начального блока. Добавлен блок move mySprite с кнопками. Теперь у нас есть танк, который мы можем перемещать с помощью кнопок в симуляции! Отлично, но он всегда смотрит в одном направлении, даже когда мы движемся вниз или вбок …

Чтобы исправить это, давайте добавим еще четыре блока, по одному для каждой кнопки направления. Создайте новую переменную под названием direction - мы сохраним в ней направление движения нашего танка, 100 будет соответствовать вниз, -100 будет соответствовать вверх, 200 для правого и -200 для левого. Почему эти цифры? Вы увидите позже, когда мы добавим снаряды, которыми будет стрелять наш танк. Логика внутри каждых четырех из этих блоков очень проста - мы проверяем, совпадает ли новое направление (от нажатия кнопки) с предыдущим. Если это так, мы практически не вносим никаких изменений. Если это не так, мы меняем спрайт танка, а в случае направления вниз и влево мы переворачиваем изображение спрайта, чтобы избежать рисования дополнительных спрайтов. Наконец, давайте присвоим начальное значение направления -100 (танк вверх), так как именно так наш танк начинает игру. Попробуйте переместить желтый танк сейчас, теперь спрайт будет меняться в зависимости от направления движения! Отлично, теперь добавим патроны.

Мы будем стрелять пулями с установленным снарядом на снаряд (нарисуйте маленький серебряный квадрат для этого спрайта) из mySprite со скоростями vx vy. Внутри кнопки включения. Нажатый блок, нам нужно проверить абсолютное значение направления, чтобы увидеть, смотрит ли желтый резервуар вверх / вниз или влево / вправо. Затем мы приступаем к запуску снаряда со скоростью, изменяемой по направлению - поэтому у нас были значения направления -100 / 100 / -200 / 200.

Теперь у нас есть желтый танк, который может стрелять снарядами и двигаться. Если бы желтые имитированные танки могли чувствовать, то наверняка чувствовали бы себя одиноким в этой пустой пустоте без врагов и вещей, которые нужно было бы сделать. Итак, для следующего шага давайте добавим врагов, чтобы он скоротал время.

Шаг 2: вывести врагов из строя

Вывести врагов
Вывести врагов
Вывести врагов
Вывести врагов

Мы начнем этот шаг с создания набора новых переменных: двух массивов (один для хранения вражеских спрайтов, а другой для указания направлений врага), переменная времени появления для хранения периода времени между появлениями, счетчик врагов для хранения максимального количества врагов. в то же время. Мы также добавим два снаряда (снаряд и снаряд противника), которые стреляют в стартовый блок - это поможет нам избежать ошибки в дальнейшем.

Далее мы создаем при обновлении игры каждый блок… ms, вставляем туда переменную spawn_time. Логика внутри блока проста - если общее количество врагов на поле битвы меньше максимально допустимого количества врагов, добавьте врага в список врага_sprite_list и добавьте 200 (иду направо) направление для этого врага.

Затем в блоке on created sprite of kind Enemy мы добавляем некоторые графические эффекты, помещаем его на случайную пустую плитку и вызываем функцию pick_direction для этого спрайта. В спрайте вида Enemy поражает стену, мы вызываем ту же функцию pick_direction.

Что в этой функции? Здесь все становится немного сложнее, так что держитесь. Вероятность того, что вражеский танк поднимется и 50% упадет, составляет 50% - мы соответствующим образом меняем спрайт. Единственный трюк здесь заключается в том, что нам также нужно изменить значение, соответствующее этому конкретному вражескому танку в списке вражеских_дирекций, на его новое направление, чтобы он стрелял в правильном направлении. Для этого мы находим индекс вражеского спрайта в списке вражеских_спрайтов и меняем значение этого элемента в списке вражеских_дирекций.

Наконец, добавим стрельбу выстрелами. Мы добавляем по одному при обновлении игры каждые 500 мс и помещаем элемент for в список врага_sprite_list. С вероятностью 30% вражеский спрайт выпустит вражеский снаряд в направлении своего движения.

Если мы запустим игру сейчас в режиме симуляции, то увидим, что наш желтый танк и вражеские танки появляются в одной точке и уходят в пустое пространство. Мы можем стрелять, а они могут стрелять в наш желтый танк, но ничего не произойдет. Это все еще кажется лишенным смысла:) Давайте добавим декорации и игровую механику в качестве последнего шага.

Шаг 3:42 игры

42 Игры
42 Игры
42 Игры
42 Игры
42 Игры
42 Игры

Мы собираемся начать этот шаг, добавив количество жизней и очков на вкладке «Информация», установив для жизни значение 10 и нулевое количество очков. Затем мы добавляем карту листов набора блоков в…. Нарисуйте карту файла так, как показано на скриншоте выше. Не забудьте добавить стены!

Добавим спрайт вида Projectile, который перекрывает otherSprite of kind Player - это когда вражеские пули попадают в наш желтый танк. Нам нужно убедиться, что эти снаряды являются пулями врага, а не нашими, поэтому мы добавим, что если условие в блоке и если оно оценивается как Истина, то мы вычитаем единицу из количества жизней. Подобно этому, в другом блоке на спрайте вида Projectile перекрывает другойSprite of kind Enemy, мы убеждаемся, что снаряд является снарядом из желтого танка, и если это условие оценивается как True, мы уничтожаем другой спрайт (вражеский танк), удаляем его из списка вражеского_спрайта_list и добавьте еще один, чтобы набрать очки.

И последнее - условия победы и поражения - для победы мы проверим, больше или равно 10 баллов в вечном блоке. Если да, то показываем экран победы. А в блоке life zero мы показываем экран Game Over.

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

Шаг 4: бесконечная игра и улучшения

Бесконечная игра и улучшения
Бесконечная игра и улучшения

В нашем репозитории GitHub вы можете загрузить два файла для аркады Makecode - один точно такой же, как вы получите, если вы будете следовать этим инструкциям, а другой - это обновленная версия, которая имеет случайным образом сгенерированный прогресс уровней. Он имеет 10 уровней, каждый из которых генерируется случайным образом с увеличением количества врагов на каждом последующем уровне.

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

Если вы делаете улучшенную версию игры, поделитесь ею в комментариях ниже! Для получения дополнительной информации о GameGo и другом оборудовании для производителей и преподавателей STEM посетите наш веб-сайт https://tinkergen.com/ и подпишитесь на наш блог.

TinkerGen начал кампанию на Kickstarter для MARK (Make A Robot Kit), набора роботов для обучения программированию, робототехнике и искусственному интеллекту!

Рекомендуемые: