- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在STM32F103上编写1个俄罗斯方块游戏
STM32F103
STM32F103
在SSTTMM3322FF110033上编写一个俄罗斯方块游戏
我手边有一块STM32F103VB 的板子,在这个板子上有一个LCD 显示屏和5个按键,
正好可以用来做俄罗斯方块这个游戏。
图 1 STM32F103VB开发板
我先是在这块板子上写了一个实时嵌入式操作系统内核——Mindows,当我完成了这个
操作系统的抢占式任务调度、信号量及队列等功能后,我想验证一下这个操作系统的功能,
于是,就在这块板子上写了一个俄罗斯方块的游戏,在此介绍一下这个游戏的设计思路,并
提供源代码,你可以在本文后面看到这个游戏在单板上运行的截图,如果你想观看游戏过程
的视频或获取源代码,请登录我的新浪博客/ifreecoding 获取。
俄罗斯方块的游戏我们应该都玩过,先将这个游戏的基本功能整理一下。我们最容易想
到的是按键功能,需要能控制图形向下、向左和向右移动,还需要能旋转图形,当我们不按
向下按键时图形还需要能自动向下走,当游戏结束时,我们需要一个按键可以重新开始游戏。
在游戏过程中还需要遵守一些规则,比如说不同的图形互相之间不能重叠,图形不能移出屏
幕的范围,当屏幕的一行被图形填满时本行需要被删除,并且上面所有的图像向下移动,还
有最重要的一点,我们需要使用LCD 将游戏的过程显示出来。
我们将这些需求做一个表格整理一下:
功能分类 子功能 描述
按键功能 开始键 按下开始键,游戏重新开始,所有状态归零
旋转键 按下旋转键,图形可以旋转
向下键 按下向下键,图形向下走
向左键 按下向左键,图形向左走
向右键 按下向右键,图形向右走
界面功能 全屏显示 需要能实时显示游戏画面
下个图形显示 将屏幕分为左右两部分,左侧为游戏空间,右侧显示下个出现的图形
游戏功能 自动走 在没有按向下键时,图形应以一定速率自动向下走
冲突检测 当图形移动、变形时不能与其它图形重叠
下个图形开始 当图形向下走会发生冲突时对本图形的操作结束,下个图形从屏幕顶端
进入屏幕,并更新屏幕右侧的下个图形
删除一行 当图形向下走会发生冲突时对本图形的操作结束,检测是否有被图形占
满的一行,若有需要删除此行
删行闪烁 在删除一行时,需要反复改变被删除行的颜色,以呈现出闪烁效果,然
后再删除此行
图形下移 在一行被删除后,被删除行上面的所有图形都需要向下移一行
打印功能 任务切换打印 将任务切换过程从串口打印出来
表 1 俄罗斯方块游戏需求列表
表1中列出了我们需要做的功能,接下来我们就要想办法来实现这些功能。我们首先要
解决的一个问题是我们必须要有一个办法能使用处理器来表示这些图形,这样才能对它们进
行控制,并将它们显示到LCD 上。LCD 中的每一个像素就是一个数据,代表着这个像素的
颜色,因此我们可以在内存中用一个二维数组来对应LCD 中的像素,数组的两个维度对应
着LCD 的X轴和Y 轴,数组中元素的数值就对应着LCD 中对应位置的像素的数值,数组
元素为黑色像素的数值时代表LCD 中对应的位置没有图形,其它数值代表有图形,这样就
可以把对LCD 中图形的操作转换为对数组数据的操作了,然后再以一定的频率将数组中的
数据输出到LCD 中,这样就实现用处理器控制LCD 中的图形了。
经过上面的分析,我们就可以将图形映射为数组数据,我们只要专注于处理数组数据,
至于LCD 中的图形则只需要将数组数据刷到LCD 上就可以了。由此可以想到的一个简单的
处理方法是使用一个任务专门来处理数组数据,使用另一个任务专门来将数组数据刷到
LCD 上,至于按键功能则可以用另一个任务专门来
您可能关注的文档
最近下载
- 膝关节置换术术后护理ppt.pptx
- 2025中考时政热点话题与知识链接.pdf VIP
- 国家开放大学电大《计算机应用基础(本)》终结性考试试题答案(格式已排好)任务二.pptx VIP
- 公诉人在法庭上讯问被告人应把握规则和方法.doc VIP
- JT_T 1499-2024 公路水运工程临时用电技术规程.pdf VIP
- DB32∕T 3160-2016 高等学校智慧校园建设与应用规范地方标准.pdf VIP
- 刑事诉讼法和公安机关办理刑事案件程序规定.ppt VIP
- 2025年最新国家开放大学电大《家畜解剖基础》期末题库及答案 .pdf VIP
- 工程投入的主要物资(材料)情况描述及进场计划.docx VIP
- 国开电大网络存储技术(福建)形考任务二参考答案.doc VIP
文档评论(0)