推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

获得赏金
15.00元
STM32掌上游戏机 OLED屏 矩阵按键 超级马里奥

更新时间:2025-04-29 17:30:03 大小:6M 上传用户:mulanhk查看TA发布的资源 标签:stm32游戏机oled 下载积分:9分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

这个项目主要实现了一个基于 OLED 屏幕的各类小游戏,包含了 OLED 屏幕的初始化与操作,以及游戏的核心逻辑,下面为你详细介绍各个文件:


以马里奥小游戏为例:


下面是代码部分的讲解:

mario.c

该文件实现了马里奥游戏的核心逻辑,包括角色控制、地图更新、物体显示和碰撞检测等功能,主要功能如下:

角色控制:

Man_Control:处理按键输入,控制马里奥的移动、跳跃和下管道等动作。

地图更新:

Gat_MapData:移动时更新地图缓存,处理地图的滚动和物体的生成。

Show_Map:显示地图缓存中的数据,包括墙、道具墙等。

物体显示:

Show_AutoObject:显示自动移动的物体,如敌人蘑菇、乌龟和放大菇,并处理碰撞检测。

Show_Property:显示金币,并处理金币的上升、下落和地图移动补偿。


下面是马里奥游戏的逻辑:

Mario_Play:游戏主循环,初始化地图数据,不断显示物体和地图,并在游戏结束时显示游戏结束界面。

Game_Wing:游戏获胜的踩旗子动画,并显示最终得分。

初始化游戏地图数据,根据回合数设置不同的地图页,并调用Init_MapDate函数进行地图数据的初始化。

初始化按键 (Key_Init()) 和 OLED 屏幕 (OLED_Init())。

进入无限循环,不断调用 Mario_Play() 函数来运行游戏。

马里奥的控制与移动,要用按键发出信号控制人物的移动:

跳跃:当按下跳跃键且马里奥不在下落状态时,设置跳跃高度限制并标记为跳跃状态。

向右移动:根据马里奥的位置和是否撞墙,决定是马里奥自身移动还是更新地图。

向左移动:当按下左键且不撞墙时,马里奥向左移动。

向下移动:当按下下键且下方是管道时,触发下管道动画并重置地图。



因为人的下落速度不是线性的,要考虑到重力,引入重力函数。

下落检查:如果马里奥下方没有障碍物且不在下落状态,则标记为下落状态。

跳跃处理:在跳跃过程中,检查是否撞墙,根据墙的类型进行不同处理,如生成金币、撞碎普通墙等。

下落处理:如果下方有障碍物,则停止下落;如果掉下悬崖,则调用 Game_Over() 函数。



最终效果展示图:


部分文件列表

文件名大小
马里奥实验台(新增下管道版本)/
马里奥实验台(新增下管道版本)/DebugConfig/
马里奥实验台(新增下管道版本)/DebugConfig/Target_1_STM32F103C8_1.0.0.dbgconf7KB
马里奥实验台(新增下管道版本)/EventRecorderStub.scvd
马里奥实验台(新增下管道版本)/Game/
马里奥实验台(新增下管道版本)/Game/Mario.c
马里奥实验台(新增下管道版本)/Game/Mario.h
马里奥实验台(新增下管道版本)/Game/Mario_Data.c
马里奥实验台(新增下管道版本)/HardWare/
马里奥实验台(新增下管道版本)/HardWare/Key.c
马里奥实验台(新增下管道版本)/HardWare/Key.h1KB
...
  • 21ic小能手打赏了15.00

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载