Игры на Raspberry Pi Pico

игры на raspberry pi pico

Я помню свой первый тупой телефон, который тогда назывался "телефон". Он мог играть в простые игры вроде "Змейки". Это была передовая технология.

До этого вам приходилось носить с собой отдельную портативную консоль для игры в "Тетрис" или более динамичную игровую систему вроде Gameboy.

Raspberry Pi Pico - это довольно мощный микроконтроллер по сравнению с тем, на чем работали портативные компьютеры в 90-х годах. Естественно, он предлагает нам возможность играть в игры той эпохи.

Насколько мощным является Raspberry Pi Pico

По сравнению с консолью 80-х годов, Raspberry Pi Pico является чрезвычайно мощным. 

Если вы запрограммируете игру, требования к ресурсам которой схожи с требованиями игры 1980-х годов, Raspberry Pi Pico, скорее всего, справится с ней без проблем.

Именно в 90-е годы становится немного сложнее сделать такой однозначный вывод.

С одной стороны, если вы рассматриваете его как устройство, способное играть в игры, похожие на те, что вы найдете на Gameboy или мобильном телефоне, вы, вероятно, будете довольны.

Однако игры конца 90-х годов стали гораздо более требовательными. Например, вы не будете играть в Quake 3 (игру 1999 года) на Pico.

На самом деле, хотя Raspberry Pi Pico может играть в Doom (1993), для человека, который ее кодировал, это была шестимесячная работа, потому что сжать игру в 2 МБ памяти, которой располагает Raspberry Pi Pico, было довольно сложной задачей.

Так, хотя Pico оснащен двумя процессорами с частотой 133 МГц, он имеет ограниченную оперативную память и хранилище, что усложняет работу.

Давайте посмотрим, как он сравнится с Gameboy:

SpecRaspberry Pi PicoGameboy (1989)Gameboy Color (1998)
ДисплейЦветной ЖК-дисплей или e-ink, все зависит от вашего воображения4 оттенка серого10, 32, 56 цветов
РазрешениеЗависит от вашего дисплея, но ограничено ресурсами Pico.160x144px160×144 px
ПРОЦЕССОРДвухъядерный 133 МГц4 МГц4МГц/8МГц
ОПЕРАТИВНАЯ ПАМЯТЬ264 КБ8 КБ32 КБ ОПЕРАТИВНОЙ ПАМЯТИ, 16 КБ ВИДЕОПАМЯТИ
Хранение2MB Картридж Game Pak: 8 МБ ПЗУ, 128 КБ ОЗУКартридж Game Pak: 8 МБ ПЗУ, 128 КБ ОЗУ

Почему вы играете в игры на Pico, а не на Zero/Pi 4?

Хороший вопрос.

Как вы знаете, Raspberry Pi Pico - это микроконтроллер, а Raspberry Pi Zero или Pi 4 - микрокомпьютеры.

Оба устройства могут играть в игры, но Raspberry Pi Pico гораздо более ограничен в возможностях.

Тем не менее, если вы хотите собрать эмулятор или игровую систему на базе Raspberry Pi Zero или Pi 4s сегодня (в 2022 году), вам лучше уже иметь такую систему, иначе вашим главным узким местом станут запасы.

Очень сложно получить Pi Zero и довольно сложно получить Pi 4.

С другой стороны, Pico достаточно много. Кроме того, он загружается практически мгновенно, в то время как микрокомпьютер Pis должен пройти через длительный процесс загрузки.

Pico также работает намного дольше. Если вам нужна мобильная установка, которая будет работать в течение нескольких часов и будет портативной, то Pico подойдет вам гораздо лучше.

Наконец, помимо складских запасов, Pico также изобилует запасами.

Если быть справедливым к Pi Zero и Pi 4, то на этих микрокомпьютерах можно играть в лучшие игры и получать лучшие результаты эмуляции. Как вы увидите в следующем разделе, Pico действительно с трудом справляется с играми, которые Zero или Pi 4 проходят без проблем.

В какие игры можно играть на Raspberry Pi Pico?

Начнем с того, что посмотрим, что сообщество любителей возиться смогло воспроизвести на Raspberry Pi Pico.

RP2040 Doom - это ответ на вопрос "будет ли это Doom?".

Да! Raspberry Pi Pico может играть в Doom.

Парень по имени Грэм Сандерсон из Остина, штат Техас, сумел перенести Doom на Raspberry Pi Pico.

Его волшебная формула?

while (!convice_myself_its_probably_impossible()) {
    do_some_more();
}

Он объяснил в своей документации процесс что он столкнулся с многочисленными ограничениями, связанными с аппаратными характеристиками Raspberry Pi Pico. В конце концов, это устройство не предназначено для игр.

Тем не менее, Грэм также решил сделать портирование Doom еще более сложным. Он хотел получить аутентичные впечатления от Doom, что означало наличие разрешения 320×200 (цвет), стереозвука, музыки OPL2, сохранения и загрузки, сетевого мультиплеера и других возможностей, доступных в оригинале.

Чтобы уместить так много игр на Raspberry Pi Pico, возникли проблемы с памятью. И оперативная память, и хранилище были ключевыми вопросами.

Во-первых, Raspberry Pi Pico имеет всего 2 МБ памяти, а shareware-версия Doom вдвое больше. В то время как другие разработчики могут решить сократить некоторые функции, такие как заставки и понижение дискретизации текстур, Грэм не хотел этого делать.

Еще одной проблемой была оперативная память: исходный код Chocolate Doom требует около 1 МБ оперативной памяти, в то время как на Pico ее всего 264 КБ. Память ограничена, потому что рендеринг графики занимает огромный кусок пространства оперативной памяти, но оперативная память также очень важна для плавной работы игры. Чтобы справиться с обоими аспектами, Грэму пришлось сделать то, что он назвал "липосакцией".

Вы можете прочитать больше, перейдя по ссылке документация, смотреть его плейлист на YouTube или обзор кода.

Эмулятор NES

Raspberry Pi Pico был успешно превращен в эмулятор NES.

В теме форума Emulator ZoneПользователь ropgar сообщил, что Raspberry Pi Pico обладает мощностью для эмуляции NES, может делать 60 кадров в секунду и отлично эмулирует APU и PPP.

Ropgar использует клавиатуру PS/2 в качестве контроллера, но вы также можете использовать оригинальный контроллер NES.

Звук хороший, нет никаких сбоев при воспроизведении видео и фоновой игровой музыки.

На Pico остается около 1,5 МБ флэш-пространства для различных игр, которые можно выбирать, нажимая Caps Lock для переключения между играми. 

Среди игр, которые ropgar удалось загрузить в демо-версию, Pacman, Arkanoids, DK, DK Jr, BubbleBobble, Galaga и многие другие.

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

Эмулятор Gameboy для Raspberry Pi Pico

Вы можете сделать свой собственный корпус Gameboy, а затем использовать Raspberry Pi Pico для эмуляции Gameboy.

Сложность здесь заключается в том, что это не то, что пользуется большим успехом. Другими словами, то, что вы создаете, может сработать, но не всегда.

Давайте рассмотрим существующие варианты.

Эмулятор Rust Gameboy (OxidGB Pico Port)

Изображение u/j_selby (Reddit)

Увидев на экране изображение покемона, я сразу же обрадовался.

Однако Джеймс Селби действительно написал о проблемах и недостатках своего эмулятора Gameboy, написанного на языке Rust, под названием OxidGB Pico Port.

"Это была поездка - разочаровывающая поездка, но, тем не менее, я получил огромное удовольствие от нее с точки зрения образования", - сказал Селби.

Проблемы и победы

Вот главная задача: Эмулятор Rust Gameboy "не совсем пригоден для игры в его нынешнем состоянии, к сожалению".

Селби сказал, что игры получают только около 10 кадров в секунду, потому что код эмулятора является узким местом, а также медленный интерфейс SPI к дисплею.

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

Вход не был настроен, так как игры были неиграбельны. 

Тестирование порта OxidGB Pico

Если вы хотите попробовать, вы можете следовать инструкциям Селби на его сайте Репозиторий Github для порта OxidGB Pico.

Эмулятор RP2040_GB

Оборудование и установка эмулятора RP2040_GB, фото Mahyar Koshkouei.

Другим эмулятором, который вы можете попробовать, является RP2040_GB, который основан на Арахис-ГБ эмулятор.

Производительность RP2040_GB достойная, и Кошкоуэй заявил, что его система "работает со скоростью более 70 кадров в секунду без эмуляции звука. С пропуском кадров и чересстрочной развёрткой может работать со скоростью до 120 кадров в секунду".

Как вы можете видеть, RP2040_GB играет в Pokemon. Шаги по установке ПЗУ на RP2040 следующие:

  • Вы должны иметь Pico SDK
  • Конвертировать .gb или .gbc ROM в заголовочный файл C с помощью xxd программа
  • Измените преобразованный файл, добавив две строки кода (в readme на Github)
  • Скопируйте ПЗУ в src папку и скомпилировать.

Существуют некоторые ограничения этого эмулятора:

  • "Этот эмулятор неточен и находится на стадии разработки... некоторые игры могут запускаться некорректно или не запускаться вообще". 
  • Игры для Gameboy Color выдают ошибку
  • Не оптимизирован для микроконтроллера: Кошкоуэй предположил, что "использование APU, оптимизированного для пространства и скорости" может помочь.

См. репозиторий RP2040_GB на Github здесь.

Компиляция мега игр с помощью Raspberry Pi Pico

Самое лучшее в этом проекте то, что он прост, а инструкции вполне достаточны для того, чтобы вы могли быстро приступить к созданию игровой консоли Raspberry Pi Pico.

Роджер Бюлер разместил на своем Github детали, инструкции и демо-версии.

В сборник Mega Games Compilation входят следующие игры:

  1. Крошка Гилберт
  2. Маленькая хитрость
  3. Крошечные захватчики v3.1
  4. Крошечный пинбол v2
  5. Крошечный Пакман v1.2
  6. Крошечный бомбардировщик v1.3
  7. Крошечный велосипед v1.2
  8. Крошка Берт 1.1
  9. Крошечный арканоид v2
  10. Tiny Tris v2.1e
  11. Крошечная дощечка
  12. Крошка ДДуг
  13. Крошечная ракета v1.1
  14. Tiny Lander v1.0 ( автор Roger Buehler )
  15. Крошечный морпион
  16. Крошечная труба

Вам понадобятся следующие детали:

  1. Raspberry Pi Pico
  2. SSD1309 128x64px SPI OLED дисплей (2,42" дисплей с соотношением 2:1)
  3. Пьезо зуммер
  4. Пять кнопок
  5. Хлебная доска
  6. Кабели перемычки
  7. Дополнительно: резисторы 10 Ом, электролитический конденсатор с номинальным напряжением не менее 10 В и 220 мкФ

Вам также понадобится Библиотека SSD1306 от Adafruit.

Вот как подключить дисплей:

  • GND -> GND дисплея 
  • 3V3(OUT) -> дисплей VCC 
  • GP16 -> Отображение DC (команда данных) 
  • GP17 -> Дисплей CS (Выбор канала) 
  • GP18 -> Дисплей SCL (тактовый генератор) 
  • GP19 -> Дисплей SDA (MOSI) 
  • GP20 -> Дисплей RES (сброс)

И соединить кнопки:

  • GP15 -> кнопка UP 
  • GP14 -> кнопка ВНИЗ 
  • GP13 -> кнопка ВЛЕВО 
  • GP12 -> кнопка ВПРАВО 
  • GP11 -> кнопка FIRE (все кнопки к GND)

И подключить пьезозвуковой сигнал:

  • GP10 -> Зуммер(+) 
  • GND -> Зуммер (-)

Установка программного обеспечения:

Для того чтобы установить программное обеспечение, необходимо использовать Arduino IDE.

Тамагочиподобная игра на Raspberry Pi Pico (Pico-Tamachibi)

Почему его называют пико-тамачиби?

По словам Кевина МакАлира, создателя этого устройства, "тама" означает "яйцо", а "чиби" относится к графике, где у персонажа большая голова. 

Создать тамачиби очень просто, потому что Кевин рассказывает о каждом шаге в своем 90-минутном учебном пособии.

Постройте свой собственный игровой автомат

Если вы хотите сделать собственную игровую машину Raspberry Pi Pico, есть два основных способа сделать это: купить готовый набор или собрать его самостоятельно.

Готовый комплект против игрового оборудования Raspberry Pi Pico "сделай сам

Хотя можно начать с нуля, вы, возможно, захотите избежать хлопот по созданию собственной системы и просто купить готовый пакет.

Существует несколько комплектов на базе RP2040, которые позволяют сразу же приступить к созданию собственных игр.

Давайте рассмотрим пикосистему Pimoroni, а затем сравним ее с процессом создания чего-то подобного с использованием отдельных деталей.

Pimoroni Picosystem

Давайте рассмотрим пикосистему Pimoroni.

Как вы можете видеть, он намного больше, чем Raspberry Pi Pico W, но это также потому, что он имеет четырехсторонний D-pad, четыре кнопки, ЖК-экран, литий-ионный аккумулятор, пьезодинамик и порт USB-C, среди прочих дополнений.

У них одинаковые процессор и оперативная память, поскольку и Picosystem, и Pico используют чип RP2040. Вот полные технические характеристики:

  • Работает на базе RP2040 (Dual Arm Cortex M0+ с 264 кБ SRAM)
  • 16 МБ флэш-памяти QSPI с поддержкой XiP
  • 1,54″ цветной ЖК-дисплей SPI IPS (режимы 240×240 и 120×120)
  • D-пад и кнопки
  • LiPo аккумулятор 525mAh (6 часов+)
  • Пьезо зуммер/динамик
  • Кнопка включения/выключения питания
  • СВЕТОДИОД RGB
  • Программируемый и перезаряжаемый через USB-C (кабель не входит в комплект)

Графические режимы

PicoSystem поддерживает два графических режима.

  • 240×240: собственное разрешение ЖК-дисплея
  • 120×120: режим удвоения пикселей (экономит оперативную память)

Как выглядят игры на Picosystem?

Играть в игры на Picosystem очень просто. Просто нажмите кнопку питания, и перед вами откроется предварительно загруженная игра Super Square Bros.

Игра представляет собой простой платформер, очень похожий на Mario.

Pimoroni также включила другие игры:

  • Super Square Bros. от Scorpion Games - задорный четырехсторонний платформер (предварительно загруженная игра)
  • Точки - Головоломка с точками. Создавайте цепочки из двух или более точек и участвуйте в гонке, чтобы набрать наибольшее количество очков.
  • Камни и алмазы - Классическая игра по уворачиванию от камней и захвату алмазов.
  • Геометрия - Разбивайте космические валуны лазерами, чтобы сделать меньшие космические валуны!
  • Восхождение радуги - Dark Souls от процедурно генерируемых головоломок с вертикальными прыжками. Удачи.
  • Super Blit Kart by Daft_Freak - Гоночная игра на основе "Mode7".

Чтобы установить эти игры, сделайте следующее:

  • Скачайте файл.
  • Подключите вашу Picosystem к компьютеру
  • Нажмите и удерживайте кнопку X, а затем нажмите кнопку питания.
  • Picosystem должна быть смонтирована как диск под названием RPI-RP2
  • Скопируйте загруженный файл .uf2 на диск. Он автоматически загрузится.

По какой-то причине мой кабель USB-C - USB-C не работал, но кабель USB-A - USB-C работал с Picosystem. Если красный светодиод не загорается, попробуйте другой кабель.

Программируйте собственные игры

Самое лучшее в Picosystem - это то, что она предоставляет систему для создания собственных игр.

Вместо того чтобы кодировать с нуля, PicoSystem поставляется со специальным API, который поможет вам создавать свои игры.

Это также избавит вас от утомительной работы по покупке отдельных деталей, таких как ЖК-экран, кнопки, провода-перемычки, макетная плата, а затем от поиска библиотек и пакетов, необходимых для обеспечения работы всего этого.

API PicoSystem имеет функции для рисования на экране, вывода звука, аппаратные функции и другие полезные функции. Это облегчает вам создание вашей игры.

Как и Raspberry Pi Pico, PicoSystem можно кодировать на C++ или MicroPython. 

Легко ли запрограммировать игру с помощью Picosystem?

Я бы рекомендовал вам запастись временем и терпением, чтобы создать свою собственную игру с помощью Picosystem.

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

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

Руководство по Picosystem MicroPython (в readme)

Примеры Picosystem MicroPython

Picosystem C++ Github

Примеры на C++ для Picosystem

Шпаргалка по API Picosystem, плюс конвертер изображений и шрифтов (на боковой панели)

Система "Сделай сам": Создание аппаратного обеспечения

Руководство YouMakeTech рассказывает читателю о том, как сделать полноценную игровую консоль с корпусом, звуковой системой и постоянной пайкой.

Для сравнения, давайте посмотрим, сколько будет стоить собрать устройство "сделай сам" по сравнению с Picosystem, которая является полным комплектом.

Игровая система YMTPimoroni Picosystem
ДелоДополнительно, 3D печать ($4.47 за чертежи в формате STL, плюс стоимость нити и аренда/эксплуатация 3D-принтера)В комплекте
Raspberry Pi Pico$5 для Pico H, потому что вам понадобятся заголовки.В комплекте
OLED-дисплей$15 (дисплей 0,96 дюйма)В комплекте
КнопкиНезначительныйВ комплекте
Хлебная доска$15 (комплект макетной платы)В комплекте
Провода перемычкиВходит в комплект макетной платыВ комплекте
ВинтыДо $1В комплекте
ПьезоНезначительный В комплекте
Общая стоимость$40.47, без учета расходов на 3D-печать$70

Итак, давайте посмотрим на окончательные затраты для различных уровней установок DIY:

НастройкаЗатраты
Нет батареи$40.47 без учета расходов на 3D-печать
Липовая батарея$8
Pimoroni Pico Lipo$16.39 - $4 (поскольку мы используем замену Pimoroni Pico, мы можем вычесть стоимость Raspberry Pi Pico)
Итого для комплекта с батарейным питанием$60.86 без учета расходов на 3D-печать

Небольшая оговорка - YouMakeTech утверждает, что это можно сделать дешевле, чем $20. Однако, по моим исследованиям, стоимость DIY-установки, соответствующей Picosystem, не так уж сильно отличается, особенно если учесть программное обеспечение и удобство.

Прототип YouMakeTech, который имеет две кнопки, экран и может играть в Pong

Тем не менее, путь "сделай сам" - это отличная возможность для обучения. Одна вещь, которая вызвала у меня затруднения, - это экран. В то время как в примере YouMakeTech используется соединение I2C, экран, который был у меня, использовал 4-контактный интерфейс SPI. Это требует либо изменения кодировки, либо модификации оборудования, чтобы продолжить работу. Если вы любите сложные задачи, то путь "сделай сам" - для вас.

Итак, какие же преимущества у "сделай сам" по сравнению с Picosystem?

Плюсы/минусыСДЕЛАЙ САМPicosystem
Сборка оборудованияТы все делаешь самВы ничего не делаете сами
Программное обеспечениеПомощи здесь немного. Вы все делаете сами и учитесь управлять каждым компонентом.Вы должны изучить API Picosystem
Возможность обученияБолее широкие возможности для обучения, поскольку вы собираете воедино разрозненные частиМеньше. Это готовый продукт, и программное обеспечение будет самой большой возможностью для обучения.
РасширяемостьПоскольку вы собрали его, вы можете изменить ЖК-экран, добавить больше кнопок, добавить светодиоды и т.д.Не так много, если только вы не хотите разобрать всю систему на части.

Создание игры в стиле Pong на Picosystem против системы DIY

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

Чтобы сравнить эти две системы, я буду строить игру, похожую на Pong, для одного игрока, как на системе DIY от YouMakeTech, так и на Picosystem.

Принцип игры прост. Это игра для одного игрока, похожая на Pong, которая дает вам 10 очков каждый раз, когда ваш мяч отскакивает от лопасти. Если он упадет в нижнюю часть экрана, вы получите сообщение "Game Over".

Создание игры на обеих системах происходит по простой схеме, которая ведет к Thonny.

Вам нужно будет прошить MicroPython на Pico, а затем вы будете использовать Thonny для кодирования вашей программы. 

MicroPython, который вы прошиваете на Picosystem, отличается от официального файла MicroPython UF2, поэтому убедитесь, что вы прошиваете правильный файл, потому что Picosystem будет работать на официальном релизе MicroPython. Просто она не будет работать так, как задумано.

Теперь давайте рассмотрим некоторые фундаментальные различия между ними. Я исключаю здесь игровую логику и сравниваю только различия в программно-аппаратном взаимодействии и моделях программирования.

Код YouMakeTech можно посмотреть здесь.

Первое отличие: аппаратный код

При использовании маршрута "сделай сам" все очень "сырое". Вот некоторый код для инициализации дисплея, GPIO и кнопок, который вам не понадобится при использовании Picosystem:

from machine import Pin, PWM, I2C,
from ssd1306 import SSD1306_I2C
...
Кнопки #
вверх = Pin(2, Pin.IN, Pin.PULL_UP)
вниз = Pin(3, Pin.IN, Pin.PULL_UP)
влево = Pin(4, Pin.IN, Pin.PULL_UP)
вправо = Pin(5, Pin.IN, Pin.PULL_UP)
кнопка1 = Pin(6, Pin.IN, Pin.PULL_UP)
кнопка2 = Pin(7, Pin.IN, Pin.PULL_UP)

Зуммер # подключен к GP18
зуммер = ШИМ(Pin(18))

# OLED-экран подключен к GP14 (SDA) и GP15 (SCL)
i2c = machine.I2C(1, sda = Pin(14), scl = Pin(15), freq = 400000)
oled = SSD1306_I2C(SCREEN_WIDTH, SCREEN_HEIGHT, i2c)

Второе отличие: API Picosystem

Если вы пишете код на Picosystem, вам придется писать в рамках ее системы.

В примере YouMakeTech вся логика игры заключена в пределах пока истина цикл. Сюда входит взаимодействие с кнопками, обнаружение столкновений и рисование на экране.

В Picosystem от вас требуется писать в рамках трех функций -... init(), update() и draw().

В моем коде вся логика игры написана на языке update() включая обработку столкновений и взаимодействие с D-pad.

В простой игре Pong есть несколько функций из API, которые я использовал, чтобы немного упростить работу:

intersects(x1, y1, w1, h1, x2, y2, w2, h2)  является, вероятно, самым большим подспорьем здесь. Вы передаете координаты и размеры двух квадратов, и функция возвращает true, если есть пересечение. В данном случае два прямоугольника - это мяч и брусок (он же весло). Недостаток функции intersects() в том, что она не определяет, с какой стороны произошло столкновение, поэтому мне пришлось написать дополнительный код, чтобы справиться со столкновениями на стороне бруска.

API Picosystem будет действительно сиять при разработке более сложных игр, учитывая, что в нем уже есть методы для фреймбуферов, вывода звука, блендинга и т.д. 

Код для Pimoroni Picosystem Pong-подобной игры

#bar_pos_x = пиксели слева, например, 0 слева
bar_pos_x = 50
#bar_pos_y = пиксели сверху, например, 100px сверху
bar_pos_y = 100
BAR_WIDTH = 30

КОНСТАНТА ДЛИНЫ = 5

скорость мяча = 1
ball_pos_x = 10
ball_pos_y = 10
ball_dx = 2
ball_dy = 2

счёт = 0
game_over = False

def update(tick):
    
    global bar_pos_x
    global bar_pos_y
    global ball_pos_x
    global ball_pos_y
    глобальный ball_dx
    глобальный ball_dy
    глобальная скорость мяча
    глобальный счёт
    глобальный гейм_овер
    
    def reverse_ball_dx():
        global ball_dx
        ball_dx = ball_dx * -1
        
    def reverse_ball_dy():
        global ball_dy
        ball_dy = ball_dy * -1
    
    ball_pos_x += ball_dx
    ball_pos_y += ball_dy
    
    если кнопка(LEFT) и bar_pos_x > 0:
        bar_pos_x -= 1
    
    если кнопка(RIGHT) и bar_pos_x < 120 - BAR_WIDTH :
        bar_pos_x += 1
        
    если ball_pos_x = 120 - LENGTH_CONSTANT :
        ball_pos_x = 120 - LENGTH_CONSTANT
        reverse_ball_dx()
        
    если ball_pos_y >= 120 - LENGTH_CONSTANT :
        game_over = True
        
    если ball_pos_y <= 0:
        ball_pos_y = 0
        reverse_ball_dy()
        
    if intersects(bar_pos_x,bar_pos_y,BAR_WIDTH,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
        
        reverse_ball_dy()
        счёт += 10
        
        1TP4Найдите пересечение шарика и бруска. если они пересекаются, проверьте, пересекаются ли они по сторонам.
        1TP4Если не по бокам (т.е. сверху), измените направление Y. В противном случае измените направление по X.
        if intersects(bar_pos_x,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
            
            1TP4Пересечение слева
            
            reverse_ball_dx()
            ball_pos_x -= 2
            
        if intersects(bar_pos_x + BAR_WIDTH,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
            
            1TP4Пересечение справа
            
            reverse_ball_dx()
            ball_pos_x += 2

        
def draw(tick):
    
    if game_over:
        pen(0,0,0)
        clear()
        pen(15,15,15)
        text("Game Over", 35, 60)
        
        
    else:
        pen(0, 0, 0)
        clear()
        pen(15,15,15)
    
        #draw bar (paddle)
        frect(bar_pos_x,bar_pos_y,BAR_WIDTH,LENGTH_CONSTANT)
    
        #draw the ball
        frect(ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT)
        text(str(score), 80, 20)
    
start()

Есть игра, которую можно порекомендовать?

Если у вас есть игра для Raspberry Pi Pico, оставьте комментарий ниже с указанием URL.

Комментировать