- Learn Linux
- Learn Electronics
- Raspberry Pi
- LPI certification
- News & Reviews
In this project I have ported graphical game that I created in Pygame Zero to the Raspberry Pi Pico with a Pimoroni Pico Explorer.
See an explanation and demonstration in the video below:
It’s a simple space game where a spacecraft flies through an asteroid field. You can fire the asteroids out of the way. This is based on a game that I created for my book: Beginning Game Programming with Pygame Zero.
Note that Pimoroni have updated their graphics library. See the following for more details: Raspberry Pi Pico Display tank game.
The Pico Explorer Base is a board with space for a Raspberry Pi Pico (with pins headers soldered protoducing into the reverse side) along with some breakout connectors, a small breadboard and an IPS LCD display with 4 buttons.
To create the sprites then I've implemented a simplified version of the Pygame Zero Actor class. This creates a sprite (known as an actor) from a bitmap image. The sprite has a draw method which shows the sprite on the screen. It can be moved around the screen using x and y co-ordinates and can be rotated to face a different direction. I've already provided more information on creating sprites on the Raspberry Pi Pico.
For the Asteroids I used vector based images. These use the shape commands included in the Pimoroni display libraries. This uses circles for the asteroids and individual pixels for the shots. To understand these in more details see my guide to vector based images on the Pico based on the Tank Game I made previously.
Download the source code below:
This has shown that it is possible to create a full game using micropython along with object oriented programming. It does however have limitations in terms of performance due to the capability of the Pico.
If you do want to get the best performance for game programming then you may want to look at using C or perhaps reducing the object-oriented hierarchy. This would be a trade off between easy to program and understand versus performance.
Another thing that this can be used for would be creating an interface to an electronics project where you wanted a graphical display. This would not necessarily need the same performance as a game would so may be a better fit. This would be similar to something I’ve done previously in my pygame Zero for makers which I created as a workshop.
Please view the copyright information regarding use of the circuits.