本文讲述的是基于STM32F407的俄罗斯方块小游戏的设计思路和测试结果,具体的代码分析见文章 基于STM32F407的俄罗斯方块游戏代码分析_钻仰弥坚的博客-CSDN博客
一、课题实现思路说明
1.1 可行性分析
可行性分析能够对新系统进行各方面的分析与研究,确定新系统是否具有开发的可行性和必要性。以免进行不必要的投资,保证新系统开发成功。基于STM32的俄罗斯的游戏设计系统将从以下三个方面进行研究:技术可行性、经济可行性、操作可行性。
(1)技术可行性:
本系统采用STM32开发版其自带的函数进行开发,俄罗斯方块需要用的是界面显示有LCD模块,游戏操纵可以用按键或者遥控器都可以实现,游戏的逻辑可以借用工具软件以及掌握的编程语言即可运行实现,在技术实现方面不存在问题。
而我们可以通过使用Keil μVision IDE/调试器和ULINK USB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。通过使用 Keil μvision IDE 调试器和 ULINK USB-JTAG 转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。因此本系统在技术上具有可行性。
(2)经济可行性:
本系统是要在STM32开发板上实现俄罗斯方块小游戏,只需要用现有的STM32自带的模块,不需要额外添加模块,在设计实现过程中不会产生较大的成本,经济上具有可行性。
(3)操作可行性:
基于STM32的俄罗斯的游戏设计系统具备的基本操作可以通过开发板上的按键或者自带的遥控器实现其方块的移动与旋转,这个系统操作起来还是比较简便的,不会很难控制。
1.2 需求分析
俄罗斯方块游戏基本规则是玩家通过旋转和移动来操纵方块,方块在下落、旋转或左右移动前要判断方块的下一个位置是否全部位置都没有方块,并且没有超出界限,如果满足条件方可移动,否则就不能移动。当方块不能继续下落时,也要判断所有行是否有满行,如果有则要消除所有的满行,并且将剩下行整行下降,以及给玩家加分。
而关于该游戏主要包含5大功能:模式选择、方块预览、等级设置、方块移动、行满消除。
(1)模式选择:点击触摸屏,可以选择出想要选择的模式,完成模式选择。
(2)方块预览提示:因为下一个将要出现的方块是随机的,所以设置了方块预览功能。玩家在移动控制当前的方块时,玩家可以在游戏界面右侧中看到下一个将要出现的方块的形状。这样有利于玩家在下一个方块出现时第一时间做出合适的判断。
(3)等级设置:等级设置包括了分数设置,当分数达到一定高度时可以升级,增加游戏的趣味性和挑战性。
(4)方块移动:利用开发板上的按键或者遥控器操纵方块的移动,包括旋转,左右移动以及加速下移,帮助玩家完成游戏。
(5)行满消除:如果有某行的方块是填满的,则消除这行的方块,并且上面的所有方块下移,并且加上相应的分数。
对于上述需求概述做出了更为细化的需求分析表,包含游戏界面设计,按键控制方块移动,游戏的逻辑设计,如下表所示。
俄罗斯方块小游戏需求分析表 | |||||
注:1、优先级分为P1、P2,重要性依次递减,即P1为必须完成功能,P2为最好完成功能 | |||||
序号 |
功能模块名称 |
使用角色 |
子功能模块名称 |
1 |
2 |
1 |
游戏界面 |
玩家 |
触摸屏点击游戏开始 |
√ |
|
操控模式选择 |
√ |
||||
关卡难度选择 |
√ |
||||
分数显示 |
√ |
||||
等级显示 |
√ |
||||
下一个方块提示 |
√ |
||||
最高分数显示 |
√ |
||||
游戏操纵提示 |
√ |
||||
方块界面显示 |
√ |
||||
游戏用时 |
√ |
||||
2 |
按键控制(遥控器控制模式同) |
玩家 |
开始键,点击游戏重新开始,(游戏失败时触发) |
√ |
|
左移键,按键方块左移 |
√ |
||||
右移键,按键方块右移 |
√ |
||||
下移键,按键方块下移 |
√ |
||||
旋转键,按键方块旋转 |
√ |
||||
重启键(仅遥控器模式存在) |
√ |
||||
3 |
游戏功能逻辑设计 |
玩家 |
生成随机方块 |
√ |
|
冲突检测(方块不能重叠及超出游戏范围) |
√ |
||||
自由下落 |
√ |
||||
满行消除 |
√ |
||||
判断模块(又叫冲突检测,用于判断无法继续下落或者旋转移动) |
√ |
||||
控制方块下落速度 |
√ |
||||
方块移动(受遥控器或按键控制) |
√ |
||||
方块旋转(受遥控器或按键控制) |
√ |
||||
计算最高分 |
√ |
1.3 功能结构分析
通过需求分析,我进一步明确了我需要设计的俄罗斯方块小游戏需要的模块。我还是把该游戏分为两个方面,一为游戏显示页面,二为游戏逻辑实现。前者是面向玩家的一个窗口,通过LED显示出方便玩家使用的功能。而后者是项目的灵魂,游戏能否正常使用在于游戏的逻辑能否实现。而对于该项目的两部分还可以继续拆分,其功能结构图如图1所示。游戏界面设计包括时间显示,模式选择,分数显示,界面显示,下一个方块提示。而游戏的逻辑设计包括玩家操纵,冲突检测,方块移动,分数计算,时间计算。其中玩家操纵也可以分为按键模式和遥控器模式,方块移动可以分为左移,右移,下移,旋转四种方式。
图1 游戏功能结构图
1.4 系统方案设计
根据上述分析游戏所需的功能模块,我们也可以对系统进行总体规划设计,我们选择以STM32F407系列微控制器作为主要控制单元,以LCD显示屏、按键、红外线模块作为主要应用,系统模块图如图2所示。STM32接收控制信息并处理,并且运行游戏的核心代码和算法,并控制LCD显示屏显示相应的游戏效果。
图2 系统模块图
1.5界面设计
(1)首页模块页面
设计的首页页面主要是欢迎玩家,玩家点击后进入游戏选择模式,具体页面如图3所示。
图3 首页模块页面
(2)模式选择页面
游戏控制模式的设计和难度选择的设计基本一样,这里不再重复,只展示游戏控制模式页面。页面如图4所示。
图4 模式选择页面
(3)游戏显示页面
该游戏的具体显示页面如图5所示,该页面的设计需要包含五个功能模块,其功能描述表如表3-4所示。
图5 游戏界面
1.6 程序主流程图
首先通过随机函数生成方块并且在右侧界面中提前展示下一个要下落的方块给玩家,然后将方块按一定的速度自由下落,在STM32开发板中玩家自行选择按键或者遥控器来控制方块的运动,各种方块运动方式包括:下降时左右移动、翻转,其中翻转又根据不同的方块有不同的翻转次数。当方块不能再下落定后,对每一行进行判断,如果有某行的方块是填满的,则消除这行的方块,并且在该行上面的所有方块整体下移。总程序流程图如图6所示。
图6 主流程图
二、课题测试
项目启动后选择对应的操纵模块和游戏难度,即可开始游戏,观察屏幕显示出来的下一个方块,让方块在合适的位置下落,满行消除后即可得分,方块堆积到一定的高度会显示失败,需要重新选择模式后才能继续游戏。
实验预期效果:在按键模式中,4个可以操纵方块的按键分别是KEY0,KEY1,KEY2,WK_UP。当按下 KEY2(左键)时,屏幕上方格会左移,按下 KEY0(右键)时,屏幕上方格会右移,当按下 KEY1(下键)时,屏幕上方格会加速下移,当按下 WK_UP(上键)时,屏幕上方格可以旋转。而在红外线遥控器模式中,则是靠对应的按键来实现。
2.1 模式选择测试
当首先从keil编译下载之后,LCD屏幕会显示游戏欢迎界面,点击Click on Start后可以进入操纵模式选择页面。
游戏欢迎界面
进入操纵模式,key mode指的是按键操控模式,remote mode指的是遥控器操控模式。这里不支持两种操控模式交替。
操纵模式选择界面
进入难度选择,easy mode是简单版,方块下落速度慢,而difficult mode是困难版,方块下落速度快。
难度选择界面
2.2 下一个方块显示测试
当我们选择好模式后,我们直接进入游戏显示界面,我们可以发现一旁的时钟开始显示计时,玩家没有操作的时候,该方块开始按照设定的速度自由地下落,并且在右侧方向显示下一个将要出现的方块。
游戏显示页面(一)
当第一个方块完成下落地时候,很快就会出现第二个方块继续下落。我们可以发现上图4.4提示的下一个方块,正是下图第二个出现的方块,说明该模块测试没有问题。
游戏显示页面(二)
2.3方块移动测试
操纵对应的按键和遥控器,我们发现按下KEY_UP键(或者遥控器上键)就可以实现方块的旋转,原本方块是竖着下落的方块,按键后变成横着下落的方块。
方块旋转
当按下 KEY2(或者遥控器左键)时,屏幕上方格会左移。
方块左移
按下 KEY0(右键)时,屏幕上方格会右移。当按下 KEY1(下键)时,屏幕上方格会加速下移。
方块右移
2.4满行消除测试
当方块下落完成后出现满行的时候,此图为方块刚下落的那一瞬间。
满行的瞬间
之后程序会识别为满行,方块整行可以消除,玩家得分,方块可以继续下落。
满行消除
2.5游戏失败测试
当方块堆积到一定的高度时,在右下方就会弹出显示游戏失败的提示,需要点击触摸该处后即可重新开始选择模式。
文章来源:https://www.toymoban.com/news/detail-513174.html
游戏失败显示文章来源地址https://www.toymoban.com/news/detail-513174.html
到了这里,关于基于STM32F407的俄罗斯方块小游戏的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!