Spiele auf dem Raspberry Pi Pico

spiele auf raspberry pi pico

In diesem Beitrag möchte ich über Spiele auf dem Raspberry Pi Pico sprechen.

Ich erinnere mich an mein erstes Dumbphone, das damals "Telefon" genannt wurde. Es konnte einfache Spiele wie Snake spielen. Das war der letzte Schrei.

Davor musste man einen separaten Handheld mit sich führen, auf dem man Tetris spielen konnte, oder ein dynamischeres Spielsystem wie einen Gameboy.

Der Raspberry Pi Pico ist ein ziemlich leistungsfähiger Mikrocontroller im Vergleich zu den Handhelds aus den 90er Jahren. Natürlich bietet er uns die Möglichkeit, Spiele aus dieser Zeit zu spielen.

Wie leistungsfähig ist der Raspberry Pi Pico

Im Vergleich zu einer Konsole aus den 80er Jahren ist der Raspberry Pi Pico extrem leistungsstark. 

Wenn Sie ein Spiel programmieren, das den Ressourcenanforderungen eines Spiels aus den 1980er Jahren ähnelt, wird der Raspberry Pi Pico es wahrscheinlich mit Bravour meistern.

In den 90er Jahren wird es etwas schwieriger, eine so eindeutige Schlussfolgerung zu ziehen.

Wenn Sie es einerseits als ein Gerät betrachten, mit dem Sie Spiele spielen können, die denen auf einem Gameboy oder einem Mobiltelefon ähneln, werden Sie wahrscheinlich zufrieden sein.

Allerdings wurden die Spiele in den späten 90er Jahren sehr viel anspruchsvoller. Sie werden zum Beispiel nicht Quake 3 (ein Spiel von 1999) auf dem Pico spielen.

Der Raspberry Pi Pico kann zwar Doom (1993) abspielen, aber es war ein sechsmonatiges Unterfangen für die Person, die es programmiert hat, weil es eine ziemlich schwierige Aufgabe war, das Spiel auf die 2 MB Speicherplatz zu komprimieren, die der Raspberry Pi Pico hat.

So verfügt der Pico zwar über zwei 133-MHz-Prozessoren, aber nur über einen begrenzten Arbeitsspeicher und eine begrenzte Speicherkapazität, was die Arbeit erschwert.

Mal sehen, wie es im Vergleich zu einem Gameboy aussieht:

SpezifikationRaspberry Pi PicoGameboy (1989)Gameboy Color (1998)
AnzeigeFarb-LCD oder E-Ink, das bleibt Ihrer Fantasie überlassen4 Schattierungen Graustufen10, 32, 56 Farben
AuflösungHängt von Ihrem Bildschirm ab, ist aber durch die Ressourcen von Pico begrenzt.160x144px160×144 px
CPU133MHz Doppelkern4MHz4MHz/8MHz
RAM264KB8KB32KB RAM, 16KB VRAM
Lagerung2MB Game Pak Kassette: 8MB ROM, 128KB RAMGame Pak Kassette: 8MB ROM, 128KB RAM

Warum spielen Sie Spiele auf dem Pico und nicht auf dem Zero/Pi 4?

Gute Frage.

Wie Sie wissen, ist der Raspberry Pi Pico ein Mikrocontroller, während der Raspberry Pi Zero oder Pi 4 Mikrocomputer sind.

Beide können Spiele spielen, aber der Raspberry Pi Pico ist viel eingeschränkter.

Das heißt, wenn Sie heute (im Jahr 2022) einen Emulator oder ein Spielsystem mit dem Raspberry Pi Zero oder Pi 4s bauen wollen, sollten Sie besser schon einen haben, sonst ist Ihr größter Engpass das Lager.

Es ist sehr schwierig, einen Pi Zero zu bekommen, und ziemlich schwierig, einen Pi 4 zu bekommen.

Auf der anderen Seite ist der Pico reichlich vorhanden. Außerdem fährt er fast sofort hoch, während der Mikrocomputer Pis einen langwierigen Hochfahrprozess durchlaufen muss.

Der Pico hält auch viel länger durch. Wenn Sie eine mobile Anlage suchen, die stundenlang läuft und tragbar ist, sind Sie mit dem Pico besser bedient.

Schließlich ist der Pico nicht nur auf Lager, sondern auch reichlich auf Lager.

Fairerweise muss man sagen, dass man mit dem Pi Zero und dem Pi 4 definitiv bessere Spiele spielen und bessere Emulationsergebnisse erzielen kann als mit diesen Mikrocomputern. Wie Sie im nächsten Abschnitt sehen werden, hat der Pico Schwierigkeiten, Spiele zu spielen, die der Zero oder Pi 4 mit Leichtigkeit bewältigt.

Welche Spiele kann der Raspberry Pi Pico spielen?

Zunächst sehen wir uns an, was die Tüftlergemeinde auf dem Raspberry Pi Pico spielen konnte.

RP2040 Doom ist die Antwort auf die Frage "Wird es Doom?".

Ja! Der Raspberry Pi Pico kann Doom spielen.

Einem Mann namens Graham Sanderson aus Austin, Texas, ist es gelungen, Doom auf den Raspberry Pi Pico zu portieren.

Seine Zauberformel?

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

Er erklärt in seiner Dokumentation des Prozesses dass er aufgrund der Hardware-Spezifikationen des Raspberry Pi Pico mit zahlreichen Einschränkungen konfrontiert war. Schließlich handelt es sich nicht um ein Gerät, das für Spiele gedacht ist.

Nichtsdestotrotz beschloss Graham auch, die Portierung von Doom noch schwieriger zu gestalten. Er wollte ein authentisches Doom-Erlebnis, d.h. eine Auflösung von 320×200 (Farbe), Stereo-Sound, OPL2-Musik, Speichern und Laden, Netzwerk-Multiplayer und andere Funktionen, die im Original vorhanden sind.

So viele Spiele auf den Raspberry Pi Pico zu packen, bedeutete eine Herausforderung für den Speicher. Sowohl der Arbeitsspeicher als auch der Speicherplatz waren wichtige Themen.

Erstens hat der Raspberry Pi Pico nur 2 MB Speicherplatz, aber die Shareware-Version von Doom ist doppelt so groß. Während andere Entwickler vielleicht beschließen, bestimmte Funktionen wie Splash-Screens und Downsampling von Texturen zu reduzieren, wollte Graham das nicht tun.

Ein weiteres Problem war der Arbeitsspeicher: Der Chocolate Doom-Quellcode benötigt etwa 1 MB RAM, während der Pico nur etwa 264 KB hat. Der Speicher ist knapp, weil das Rendern der Grafiken einen großen Teil des RAMs beansprucht, aber der RAM ist auch sehr wichtig für den reibungslosen Ablauf des Spiels. Um beide Aspekte unter einen Hut zu bringen, musste Graham etwas tun, was er "Fettabsaugung" nannte.

Weitere Informationen finden Sie unter die Dokumentation, beobachten seine YouTube-Wiedergabeliste oder Überprüfung des Codes.

NES-Emulator

Der Raspberry Pi Pico wurde erfolgreich in einen NES-Emulator verwandelt.

In einem Emulator Zone Forum ThreadDer Benutzer ropgar sagte, dass der Raspberry Pi Pico die Leistung hat, ein NES zu emulieren, und er kann 60 Bilder pro Sekunde machen und APU und PPP perfekt emulieren.

Ropgar verwendet eine PS/2-Tastatur als Controller, aber man kann auch den originalen NES-Controller verwenden.

Der Ton ist gut und es gibt keine Störungen bei Video und Hintergrundmusik.

Der Pico verfügt über etwa 1,5 MB Flash-Speicherplatz für verschiedene Spiele, die durch Drücken der Feststelltaste ausgewählt werden können. 

Die Spiele, die ropgar auf seine Demo laden konnte, sind Pacman, Arkanoids, DK, DK Jr, BubbleBobble, Galaga und viele andere.

Der einzige Nachteil ist, dass es keinen öffentlichen Quellcode oder eine Anleitung gibt, wie man das macht.

Gameboy-Emulator für den Raspberry Pi Pico

Sie können Ihr eigenes Gameboy-Gehäuse bauen und dann den Raspberry Pi Pico verwenden, um den Gameboy zu emulieren.

Das Schwierige daran ist, dass es sich dabei nicht um etwas handelt, das sehr erfolgreich war. Mit anderen Worten: Was Sie bauen, kann funktionieren, aber nicht immer.

Werfen wir einen Blick auf die verschiedenen Möglichkeiten, die es gibt.

Rust Gameboy-Emulator (OxidGB Pico Port)

Bild von u/j_selby (Reddit)

Als ich das Pokemon-Bild auf dem Bildschirm sah, war ich sofort begeistert.

James Selby schrieb jedoch über die Herausforderungen und Unzulänglichkeiten seines in Rust geschriebenen Gameboy-Emulators namens OxidGB Pico Port.

"Dies war eine Fahrt - eine frustrierende Fahrt, aber eine Fahrt, die ich aus pädagogischer Sicht dennoch sehr genossen habe", sagte Selby.

Probleme und Erfolge

Das ist die größte Herausforderung: Der Rust Gameboy-Emulator "ist in seinem aktuellen Zustand leider nicht wirklich spielbar".

Selby sagte, dass Spiele nur etwa 10 FPS erreichen, weil der Code des Emulators einen Engpass darstellt, ebenso wie die langsame SPI-Schnittstelle zum Display.

Es ist möglich, die Dinge zu beschleunigen, aber das würde Zeit für die Planung und Umsetzung erfordern.

Die Eingabe wurde nicht konfiguriert, da die Spiele nicht spielbar waren. 

Testen des OxidGB Pico Ports

Wenn Sie es ausprobieren möchten, können Sie den Anweisungen von Selby auf seiner Github Repo für den OxidGB Pico Port.

RP2040_GB-Emulator

Hardware und Aufbau des RP2040_GB-Emulators, Foto von Mahyar Koshkouei.

Ein weiterer Emulator, den Sie ausprobieren können, ist der RP2040_GBdie sich auf die Erdnuss-GB Emulator.

Die Leistung des RP2040_GB ist anständig. Koshkouei sagt, dass sein Setup "mit mehr als 70 fps ohne Audioemulation läuft. Mit Frame-Skip und Interlacing können bis zu 120 fps erreicht werden".

Wie Sie sehen können, spielt das RP2040_GB Pokemon. Die Schritte, um ein ROM auf das RP2040 zu bekommen, sind wie folgt:

  • Sie müssen das Pico SDK haben
  • Konvertieren .gb oder .gbc ROM in eine C-Header-Datei unter Verwendung der xxd Programm
  • Ändern Sie die konvertierte Datei, indem Sie zwei Codezeilen hinzufügen (in der Readme-Datei von Github)
  • Kopieren Sie das ROM in den src und kompilieren.

Es gibt einige Einschränkungen dieses Emulators:

  • "Dieser Emulator ist ungenau und befindet sich noch in der Entwicklung ... einige Spiele können fehlerhaft oder gar nicht laufen." 
  • Gameboy Color-Spiele geben einen Fehler aus
  • Nicht für Mikrocontroller optimiert: Koshkouei schlug vor, dass "die Verwendung einer APU, die für Platz und Geschwindigkeit optimiert ist", helfen kann.

Das Github-Repositorium des RP2040_GB finden Sie hier.

Mega-Spiele-Zusammenstellung mit Raspberry Pi Pico

Das Beste an diesem Projekt ist, dass es einfach ist und die Anleitung ausreicht, um schnell mit einer Raspberry Pi Pico Spielekonsole zu beginnen.

Roger Bühler hat Teile, Anleitungen und Demos auf seinem Github bereitgestellt.

Die Mega Games Compilation enthält die folgenden Spiele:

  1. Tiny Gilbert
  2. Kleiner Trick
  3. Tiny Invaders v3.1
  4. Tiny Pinball v2
  5. Tiny Pacman v1.2
  6. Tiny Bomber v1.3
  7. Winziges Fahrrad v1.2
  8. Tiny Bert 1.1
  9. Winziges Arkanoid v2
  10. Tiny Tris v2.1e
  11. Winzige Plakette
  12. Tiny DDug
  13. Tiny Missile v1.1
  14. Tiny Lander v1.0 ( von Roger Buehler )
  15. Winziger Morpion
  16. Tiny Pipe

Sie benötigen die folgenden Teile:

  1. Raspberry Pi Pico
  2. SSD1309 128x64px SPI OLED-Display (2,42" Display im Verhältnis 2:1)
  3. Piezo-Summer
  4. Fünf Tasten
  5. Brettchen
  6. Starthilfekabel
  7. Optional: 10-Ohm-Widerstände, Elektrolytkondensator mit einer Spannung von mindestens 10 V und 220 uF

Sie benötigen außerdem Adafruits SSD1306-Bibliothek.

So schließen Sie das Display an:

  • GND -> Display GND 
  • 3V3(OUT) -> Anzeige VCC 
  • GP16 -> Anzeige DC (Datenbefehl) 
  • GP17 -> Anzeige CS (Kanalauswahl) 
  • GP18 -> Anzeige SCL (Takt) 
  • GP19 -> Anzeige SDA (MOSI) 
  • GP20 -> Anzeige RES (Reset)

Und um die Tasten zu verbinden:

  • GP15 -> Taste UP 
  • GP14 -> Taste DOWN 
  • GP13 -> Taste LINKS 
  • GP12 -> Taste RECHTS 
  • GP11 -> Taste FIRE (alle Tasten auf GND)

Und zum Anschluss des Piezo-Summers:

  • GP10 -> Buzzer(+) 
  • GND -> Buzzer(-)

Installation der Software:

Um die Software zu installieren, müssen Sie die Arduino IDE verwenden.

Tamagotchi-ähnliches Spiel auf dem Raspberry Pi Pico (Pico-Tamachibi)

Warum wird es Pico-Tamachibi genannt?

Laut Kevin McAleer, dem Erfinder dieses Geräts, bedeutet "tama" "Ei" und "chibi" bezieht sich auf Grafiken, bei denen die Figur einen großen Kopf hat. 

Die Erstellung des Tamachibi ist ganz einfach, denn Kevin geht in seiner 90-minütigen Anleitung auf jeden einzelnen Schritt des Weges ein.

Baue deinen eigenen Spielautomaten

Wenn Sie Ihren eigenen Raspberry Pi Pico-Gaming-Automaten bauen möchten, gibt es zwei Möglichkeiten: Sie können einen fertigen Bausatz kaufen oder selbst einen bauen.

Fertiger Bausatz vs. DIY Raspberry Pi Pico Gaming-Hardware

Es ist zwar möglich, bei Null anzufangen, aber vielleicht möchten Sie sich die Mühe sparen, Ihr eigenes System zu bauen, und einfach ein fertiges Paket kaufen.

Es gibt einige RP2040-basierte Kits, mit denen Sie direkt mit dem Spielen oder Entwickeln Ihrer eigenen Spiele beginnen können.

Schauen wir uns das Pimoroni Picosystem an und vergleichen es dann mit dem Prozess, etwas Ähnliches aus Einzelteilen zu bauen.

Pimoroni Picosystem

Werfen wir einen Blick auf das Pimoroni Picosystem.

Wie Sie sehen können, ist er viel größer als der Raspberry Pi Pico W, aber das liegt auch daran, dass er unter anderem ein Vier-Wege-D-Pad, vier Tasten, einen LCD-Bildschirm, einen Lithium-Ionen-Akku, einen Piezo-Lautsprecher und einen USB-C-Anschluss hat.

Er verfügt über denselben Prozessor und Arbeitsspeicher, da sowohl das Picosystem als auch der Pico den RP2040-Chip verwenden. Hier sind die vollständigen Spezifikationen:

  • Angetrieben von RP2040 (Dual Arm Cortex M0+ mit 264kB SRAM)
  • 16 MB QSPI-Flash mit Unterstützung für XiP
  • 1,54″ Farb-SPI-IPS-LCD (240×240 und 120×120 Modi)
  • D-Pad und Tasten
  • 525mAh LiPo-Akku (6 Std. +)
  • Piezo-Summer/Lautsprecher
  • Ein-/Ausschalttaste
  • RGB-LED
  • Programmierbar und wiederaufladbar über USB-C (Kabel nicht enthalten)

Grafik-Modi

PicoSystem unterstützt zwei Grafikmodi.

  • 240×240: die native Auflösung des LCD-Bildschirms
  • 120×120: pixelverdoppelter Modus (spart RAM)

Wie sieht das Spielen auf dem Picosystem aus?

Das Spielen auf dem Picosystem ist einfach. Drücken Sie einfach die Einschalttaste und Sie werden mit dem vorinstallierten Spiel Super Square Bros.

Das Spiel ist ein einfacher Platformer, ähnlich wie Mario.

Pimoroni hat auch andere Spiele aufgenommen:

  • Super Square Bros. von Scorpion Games - Ein hüpfendes viereckiges Jump'n'Run (vorinstalliertes Spiel)
  • Dots - Ein Puzzlespiel, bei dem Punkte auftauchen. Bilden Sie Ketten aus zwei oder mehr Punkten und wetteifern Sie darum, die höchste Punktzahl zu erreichen.
  • Felsen und Diamanten - Klassisches Spiel, bei dem man Steinen ausweichen und Diamanten einsammeln muss.
  • Geometrie - Zerschlage Weltraumfelsen mit Lasern, um kleinere Weltraumfelsen zu erzeugen!
  • Regenbogen-Aufstieg - Das Dark Souls der prozedural generierten vertikalen Sprungpuzzles. Viel Glück!
  • Super Blit Kart von Daft_Freak - Ein "Mode7"-basiertes Rennspiel.

Um diese Spiele zu installieren, gehen Sie wie folgt vor:

  • Laden Sie die Datei herunter.
  • Schließen Sie Ihr Picosystem an den PC an
  • Halten Sie die X-Taste gedrückt und drücken Sie die Power-Taste.
  • Das Picosystem sollte als Laufwerk namens RPI-RP2 eingebunden werden
  • Kopieren Sie die heruntergeladene .uf2-Datei auf Ihr Laufwerk. Sie wird automatisch geladen.

Aus irgendeinem Grund funktionierte mein USB-C-auf-USB-C-Kabel nicht, aber das USB-A-auf-USB-C-Kabel funktionierte mit dem Picosystem. Wenn die rote LED nicht aufleuchtet, versuchen Sie ein anderes Kabel.

Programmieren Sie Ihre eigenen Spiele

Das Beste am Picosystem ist, dass es ein System bietet, mit dem du deine eigenen Spiele erstellen kannst.

Anstatt von Grund auf neu zu programmieren, verfügt PicoSystem über eine spezielle API, mit der Sie Ihre Spiele erstellen können.

Außerdem entfällt ein großer Teil der mühsamen Arbeit, die erforderlich ist, um Einzelteile wie einen LCD-Bildschirm, Tasten, Überbrückungsdrähte und eine Lochrasterplatine zu kaufen und dann die Bibliotheken und Pakete zu finden, die erforderlich sind, um alle diese Teile zum Laufen zu bringen.

Die API des PicoSystems verfügt über Funktionen zum Zeichnen von Dingen auf dem Bildschirm, zur Ausgabe von Audio, Hardwarefunktionen und anderen Hilfsfunktionen. Das macht es einfacher für dich, dein Spiel zu bauen.

Genau wie der Raspberry Pi Pico kann das PicoSystem in C++ oder MicroPython programmiert werden. 

Ist es einfach, ein Spiel mit dem Picosystem zu programmieren?

Ich würde empfehlen, dass Sie etwas Zeit und Geduld mitbringen, um Ihr eigenes Spiel mit dem Picosystem zu bauen.

Die Dokumentation bietet die Grundlagen, um den Einstieg zu erleichtern, aber am besten ist es, wenn Sie bereits einige Vorkenntnisse in der Spieleprogrammierung haben.

Die größte Herausforderung für Anfänger ist, dass es nicht viele Ressourcen gibt, in denen man lernen kann, wie man Beispielprojekte programmiert. Hier ist jedoch eine Liste von Referenzen, die Ihnen helfen werden:

Picosystem MicroPython Anleitung (in readme)

Picosystem MicroPython Beispiele

Picosystem C++ Github

Picosystem C++ Beispiele

Picosystem API Spickzettel, plus Bild, Schriftart Konverter (in der Seitenleiste)

DIY-System: Erstellen der Hardware

YouMakeTechs Anleitung zeigt dem Leser, wie man eine komplette Spielkonsole mit Gehäuse, Soundsystem und Dauerlöten baut.

Für unseren Vergleich sehen wir uns an, wie viel es kosten würde, ein Gerät selbst zu bauen, im Vergleich zum Picosystem, das ein kompletter Bausatz ist.

Das Spielsystem von YMTPimoroni Picosystem
FallOptional, 3D-gedruckt ($4.47 für STL-Entwürfe, plus Kosten für Filament und Miete/Betrieb des 3D-Druckers)Eingeschlossen
Raspberry Pi Pico$5 für Pico H, da Sie die Header benötigen.Eingeschlossen
OLED-Display$15 (0,96-Zoll-Display)Eingeschlossen
ButtonsVernachlässigbarEingeschlossen
Brettchen$15 (Breadboard-Bausatz)Eingeschlossen
ÜberbrückungsdrähteEnthalten im Breadboard-KitEingeschlossen
SchraubenBis zu $1Eingeschlossen
PiezoVernachlässigbar Eingeschlossen
Gesamtkosten$40.47, ohne Kosten für 3D-Druck$70

Schauen wir uns also die endgültigen Kosten für die verschiedenen Stufen von DIY-Setups an:

EinrichtungKosten
Keine Batterie$40.47 ohne 3D-Druckkosten
Lipo-Akku$8
Pimoroni Pico Lipo$16.39 - $4 (da wir den Pimoroni Pico Ersatz verwenden, können wir die Kosten für den Raspberry Pi Pico abziehen)
Insgesamt für ein batteriebetriebenes Kit$60.86 exkl. 3D-Druckkosten

Nur ein Vorbehalt - YouMakeTech sagt, dass man dies für weniger als $20 bauen kann. Nach meinen Recherchen unterscheiden sich die Kosten für einen Selbstbau, der mit dem Picosystem übereinstimmt, jedoch nicht so sehr, vor allem wenn man die Software und den Komfort berücksichtigt.

Der Prototyp von YouMakeTech, der zwei Tasten und einen Bildschirm hat und Pong spielen kann

Dennoch ist der Selbstbau eine großartige Lernmöglichkeit. Eine Sache, die mich herausforderte, war der Bildschirm. Während das Beispiel von YouMakeTech eine I2C-Verbindung verwendet, nutzte der Bildschirm, den ich hatte, eine 4-polige SPI-Schnittstelle. Das erfordert entweder eine Änderung des Codes oder eine Modifizierung der Hardware, um weiterzumachen. Wenn Sie Herausforderungen mögen, ist die DIY-Route genau das Richtige für Sie.

Was sind also die Vorteile des Selbstbaus gegenüber dem Picosystem?

Pro/KontraDIYPicosystem
Montage der HardwareSie machen alles selbstSie machen nichts selbst
SoftwareHier gibt es nicht viel Hilfe. Man baut alles selbst und lernt, wie man die einzelnen Komponenten bedient.Sie müssen die API des Picosystems erlernen
Gelegenheit zum LernenGrößere Lernchancen, da Sie verschiedene Teile zusammenfügenKleiner. Es ist fertig und die Software wird hier die größte Lernchance sein
ErweiterungsfähigkeitDa Sie es selbst gebaut haben, können Sie den LCD-Bildschirm ändern, weitere Tasten hinzufügen, LEDs hinzufügen usw.Nicht viel, es sei denn, Sie wollen ein komplettes System auseinandernehmen.

Erstellung des Pong-ähnlichen Spiels auf dem Picosystem vs. DIY-System

Ein neugieriges Experiment von mir besteht darin, herauszufinden, wie viel Aufwand es bedeutet, ein Spiel mit dem Picosystem zu entwickeln, anstatt es von Grund auf neu zu machen.

Um die beiden Systeme zu vergleichen, werde ich ein Pong-ähnliches Spiel für einen Spieler sowohl mit dem DIY-System von YouMakeTech als auch mit dem Picosystem bauen.

Die Prämisse des Spiels ist einfach. Es ist ein Pong-ähnliches Spiel für einen Spieler, bei dem du jedes Mal 10 Punkte bekommst, wenn dein Ball vom Paddel abprallt. Wenn er auf den Boden des Bildschirms fällt, erhalten Sie eine "Game Over"-Meldung.

Die Erstellung des Spiels auf beiden Systemen folgt einem einfachen Arbeitsablauf, der alle zu Thonny führt.

Sie müssen MicroPython auf den Pico flashen und dann Thonny verwenden, um Ihr Programm zu programmieren. 

Der MicroPython, den du auf das Picosystem flashen würdest, unterscheidet sich von der offiziellen MicroPython UF2-Datei. Stelle also sicher, dass du die richtige flashen willst, denn das Picosystem wird mit der offiziellen MicroPython-Version laufen. Es wird nur nicht wie vorgesehen funktionieren.

Betrachten wir nun einige grundlegende Unterschiede zwischen den beiden. Ich schließe hier die Spiellogik aus und vergleiche nur die Unterschiede in der Interaktion zwischen Hardware und Software sowie die Programmiermuster.

Sie können den Code von YouMakeTech hier sehen.

Erster Unterschied: Hardware-Code

Die Dinge sind sehr "roh" mit der DIY-Route. Hier ist etwas Code, um das Display, GPIO und Tasten zu initialisieren, die Sie nicht brauchen, um mit dem Picosystem zu tun:

from machine import Pin, PWM, I2C,
from ssd1306 import SSD1306_I2C

# Buttons
up = Pin(2, Pin.IN, Pin.PULL_UP)
down = Pin(3, Pin.IN, Pin.PULL_UP)
left = Pin(4, Pin.IN, Pin.PULL_UP)
right = Pin(5, Pin.IN, Pin.PULL_UP)
button1 = Pin(6, Pin.IN, Pin.PULL_UP)
button2 = Pin(7, Pin.IN, Pin.PULL_UP)

# Buzzer connected to GP18
buzzer = PWM(Pin(18))

# OLED Screen connected to GP14 (SDA) and GP15 (SCL)
i2c = machine.I2C(1, sda = Pin(14), scl = Pin(15), freq = 400000)
oled = SSD1306_I2C(SCREEN_WIDTH, SCREEN_HEIGHT, i2c)

Zweiter Unterschied: Die API von Picosystem

Wenn Sie Code für das Picosystem schreiben, müssen Sie innerhalb des Systems schreiben.

Im Beispiel von YouMakeTech ist die gesamte Spiellogik in einer Datei gekapselt. während Wahr Schleife. Dazu gehören die Interaktion mit Schaltflächen, die Kollisionserkennung und das Zeichnen auf dem Bildschirm.

Im Picosystem müssen Sie innerhalb von drei Funktionen schreiben - init(), update() und zeichnen().

In meinem Code ist die gesamte Logik des Spiels in aktualisieren() einschließlich Kollisionskontrolle und D-Pad-Interaktion.

In einem einfachen Pong-Spiel gibt es ein paar Funktionen der API, die ich verwendet habe, um die Dinge etwas zu vereinfachen:

kreuzt(x1, y1, w1, h1, x2, y2, w2, h2)  ist hier wahrscheinlich die größte Hilfe. Du gibst die Koordinaten und Größen der beiden Rechtecke an, und es wird true zurückgegeben, wenn es eine Überschneidung gibt. In diesem Fall sind die beiden Rechtecke der Ball und der Stab (auch bekannt als Paddel). Das Manko der Funktion intersects() ist, dass sie nicht erkennt, auf welcher Seite die Kollision stattgefunden hat, so dass ich zusätzlichen Code schreiben musste, um Kollisionen auf der Seite der Stange zu behandeln.

Die API des Picosystems wird bei der Entwicklung komplizierterer Spiele wirklich glänzen, da sie bereits über eine Methode für Framebuffer, Audioausgabe, Blending usw. verfügt. 

Code für Pimoroni Picosystem Pong-ähnliches Spiel

#bar_pos_x = pixels from left, e.g. 0 from left
bar_pos_x = 50
#bar_pos_y = pixels from top, e.g. 100px from top
bar_pos_y = 100
BAR_WIDTH = 30

LENGTH_CONSTANT = 5

ball_speed = 1
ball_pos_x = 10
ball_pos_y = 10
ball_dx = 2
ball_dy = 2

score = 0
game_over = False

def update(tick):
    
    global bar_pos_x
    global bar_pos_y
    global ball_pos_x
    global ball_pos_y
    global ball_dx
    global ball_dy
    global ball_speed
    global score
    global game_over
    
    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
    
    if button(LEFT) and bar_pos_x > 0:
        bar_pos_x -= 1
    
    if button(RIGHT) and bar_pos_x < 120 - BAR_WIDTH :
        bar_pos_x += 1
        
    if ball_pos_x <= 0 :
        ball_pos_x = 0
        reverse_ball_dx()
        
    if ball_pos_x >= 120 - LENGTH_CONSTANT :
        ball_pos_x = 120 - LENGTH_CONSTANT
        reverse_ball_dx()
        
    if ball_pos_y >= 120 - LENGTH_CONSTANT :
        game_over = True
        
    if 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()
        score += 10
        
        #main intersection of ball and bar. if they intersect, check if they are intersecting on the sides.
        #if not on sides (i.e. on top) reverse Y direction. Or else, reverse X direction.
        if intersects(bar_pos_x,bar_pos_y,1,LENGTH_CONSTANT, ball_pos_x, ball_pos_y, LENGTH_CONSTANT,LENGTH_CONSTANT):
            
            #intersecting on left
            
            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):
            
            #intersecting on right
            
            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()

Haben Sie ein Spiel zu empfehlen?

Wenn Sie ein Spiel für den Raspberry Pi Pico haben, hinterlassen Sie unten einen Kommentar mit einer URL.

Und wenn Sie sich unsere Paragon-Projektserie ansehen möchten - gehen Sie zu hier.

1 Kommentare

  1. Veröffentlich von Mt am April 15, 2024 um 12:06 am

    Verfügt das Pimoroni-System über einen Code, der es ermöglicht, ein externes Zubehör/Gerät wie einen kleinen FPGA zur Leistungssteigerung zu verwenden?

Hinterlassen Sie einen Kommentar