Whole game is implemented on STM32L476RG microcontroller, with some aditional peripherals, like SSD1306 OLED display, 2x switch (buttons), 2x potentiometer, 2x 7-segment display.
Game is about choosing the right combination of 6 characters. You have 6 characters and 4 positions. On each position could be any character (they could repeat).
Photo of SSD1306 OLED at beginning, at choosing single combination, at single result, at final result:
Photo of UART terminal at middle of the game:
Photo of UART terminal at the end of the game:
On next photo is Block Schematic of System.
That's bare metal system (without any RTOS). Whole project relies on STM32 HAL functions. All user software was written in C++, so generaly project is mix of C++, C, and assembly (a little bit).
There on next photo you can see software architecture of this system.
There on next photo you can see software architecture of ButtonPressedEventCallback function, which could not fit on above photo.
SSD1306 OLED:
https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
https://www.texim-europe.com/getfile.ashx?id=121863
I2C protocol:
https://www.pololu.com/file/0J435/UM10204.pdf
STM32L476RG:
https://www.st.com/resource/en/reference_manual/rm0351-stm32l47xxx-stm32l48xxx-stm32l49xxx-and-stm32l4axxx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf