| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> UEFI开发探索94 – 迷宫小游戏 -> 正文阅读 |
|
[游戏开发]UEFI开发探索94 – 迷宫小游戏 |
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365) UEFI下的迷宫小游戏最近一直在写YIE002开发探索的博客,偶尔看看其他人写的和BIOS开发相关的博客。 经常看的博客有Tim Lewis、Vincent Zimmer等,总是能学到一些东西。 今天下班后,可能是因为最近公司的事情比较繁杂,精神有点不振。虽然计划了近期要写的嵌入式代码,可是怎么也提不起劲,开发工具都不想打开。 我无聊地翻阅着常看的几位作者的博客,Tim Lewis有个关于UEFI和C++的议题,稍微有点兴趣,就点进去看了。 他的代码放在了sourceforge上,地址为:https://sourceforge.net/projects/syslibforuefi/。下载了之后,我浏览了目录结构,发现几个有意思的程序。其中有些是可以在UEFI下玩的小游戏,看来程序员的想法很类似啊,我之前也开发了UEFI下的贪吃蛇游戏。 今天休息一下,拜读下顶级BIOS程序员写的UEFI程序。 1 Maze程序结构分析源程序在文末给出了,可以试玩一下。 整个迷宫程序的主要实现目标包括: 实现的目标比较简单,从代码结构来看,主要包含如下函数,如图1所示。 整体的程序结构还是非常容易理解的,而且作者写了非常详细的注释,很容易看明白。基本步骤如下: 1)定义全局变量
其中,与迷宫背景、障碍物(也即石头)、角色相关的图像,都使用EFI_GRAPHICS_OUTPUT_BLT_PIXEL型指针变量mBgBlt、mRockBlt和mCharBlt保存了。 2)设置迷宫设置迷宫是本游戏中最重要的部分,为保证可以随机生成迷宫,在main()函数开始,使用用当前时间生成了新的seed:
而生成迷宫的核心函数为MazeCreate(),它调用了MazeGenerate()来随机产生迷宫。代码内容如下:
MazeGenerate()函数非常有意思,它使用递归的方式,保证生成的迷宫能有出口。而出口的位置,是由随机函数rand()来决定的。 3) 游戏控制游戏控制通过函数RunGame()实现,它接收用户对方向键的输入,控制角色在迷宫中行走。RunGame()对觉得的操作,则由函数PlayerMove()来实现,具体内容如下:
此函数根据用户的输入,在当前位置显示角色,并消去上一位置的角色图形。而当角色的位置与迷宫障碍物相同时(也即石头组成的墙壁),则不进行任何操作。 2 编译运行使用如下命令编译:
将编译好的MazeGame.efi,以及项目工程中的bg.bmp、char.bmp和object.bmp拷贝到Tiancore模拟器所在的目录,启动UEFI Shell,运行MazeGame.efi,效果如图2所示。 Gitee地址:https://gitee.com/luobing4365/uefi-exolorer Gitee地址:https://gitee.com/luobing4365/uefi-exolorer |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/25 19:42:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |