一、项目介绍
基于树莓派RP2040制作推箱子小游戏,主要是学习向,使用了240*240的lcd屏幕和和四向摇杆,并且使用micropython作为编程语言,可以通过该项目学习嵌入式开发的基础。
二、设计思路
如下图
一开始我对板卡还不够了解,我的基本思路就是准备跟着课上老师所给出的游戏制作思路和老师的贪吃蛇例程来仿照着写出一个自己的小游戏,最后想来想去准备做这个推箱子的小游戏,因为比较简单,而且能够把老师课上讲到的点全部应用起来,于是我就开始根据老师的例程来去着手设计代码。最开始我是准备先实现屏幕显示,根据例程来学习屏幕的使用方法,结果屏幕点不亮,后来发现是板子里自带的驱动不兼容,换了个驱动就好了,然后是建立跟老师课上类似的地图资源文件,然后根据地图资源建立地图,建立完地图之后便开始写按键检测函数,之后是游戏的真正算法,根据检测到的按键来对人物做出相对应的移动,最后是胜利检测。做完这些,一个游戏的雏形就有了,但是还得给它加上标题界面和bgm,bgm的异步一开始我不是很能理解,不过后来查了点资料就解决了,以上就是我的整体设计思路。
三、硬件介绍
采用树莓派Pico核心芯片RP2040,主要特点有:
双核Arm Cortex M0+内核,可以运行到133MHz,264KB内存性能强大、高度灵活的可编程IO可用于高速数字接口,片内温度传感器、并支持外部4路模拟信号输入,内部ADC采样率高达500Ksps、12位精度,支持MicroPython、C、C++编程
板上功能:
240*240分辨率的彩色IPS LCD,SPI接口,控制器为ST7789,四向摇杆 + 2个轻触按键 + 一个三轴姿态传感器MMA7660用做输入控制,板上外扩2MB Flash,预刷MicroPython的UF2固件,一个红外接收管 + 一个红外发射管,一个三轴姿态传感器MMA7660,一个蜂鸣器,双排16Pin连接器,有SPI、I2C以及2路模拟信号输入,可以使用MicroPython、C、C++编程,USB Type C连接器用于供电、程序下载
四、主要功能展示
实现了游戏标题界面和游戏主要内容,以及bgm播放
游戏标题页面:
游戏实际画面:
游戏胜利画面:
主要代码块:
关键绘图函数
def outtextxy(x, y, c, color):
global pen_color
hardware.tft.text(font3, c, x*16, y*16, pen_color, color)
def setcolor(c):
global pen_color
pen_color = c
标题界面绘制
def title(self):
hardware.tft.text(font2, 'tuixiangzi', 2*16, 1*32, color_cfg.wall,
color_cfg.background)
hardware.tft.text(font1, 'Press A to start', 2*16, 6*32, color_cfg.wall,
color_cfg.background)
游戏主要函数
async def process(self):
bgm = asyncio.create_task(self.bgm_process())
self.title()
while True:
buttonValueA = buttonA.value()
if buttonValueA == 0:
hardware.init()
self.init_run()
print('go')
while True:
self.d = 0
self.dir_select()
self.run()
self.draw()
self.judge()
await self.blink()