This project is a
displayio based CircuitPython port of a classic Nintendo Game & Watch handheld game titled Octopus. It's made to run on PyGamer and PyBadge devices (including PyBadge LC and EdgeBadge).
The game centers around 3 divers trying to retrieve as much treasure as they can from a sunken ship. The player controls one diver at a time, moving them forward and backward to dive into the water, move across the seabed, grab treasure from the chest, and then retrace their watery steps back to the boat to haul in their catch. The treasure is guarded by a giant octopus with several outstretched tentacles waiting to snatch any diver who gets too close at the wrong time.
The guide is intended to cover the general process of porting low-complexity games to CircuitPython, and Octopus is the specific one I've done. But the techniques and process shown can be used to implement other basic games, whether they were originally Nintendo Game & Watch, or anything else!
The graphics in the game rely heavily upon the principals in displayio. If you don't have any experience with it yet, it's probably good to have a look through the main displayio learn guide, then come back here to work on the game.
The majority of the project code was developed during live streams. This YouTube playlist contains the videos of those streams in chronological order if you'd like a more in depth look at the development process.