程设训练作业:C++和SFML实现的开心消消乐
项目简介
该项目是基于奇牛学院的课程基础上改进而来的。
该项目的逻辑并不复杂,更多的是页面逻辑设计,以及SFML基础语法的使用。
具体效果先上图:
就是实现了一个简陋的消消乐功能,并且具有积分、倒计时等功能。
项目代码
首先,我还是先建议你看一下奇牛学院的教程,跟着视频手撸一遍,理解起来还是更快。
对于我的项目,主要是包括以下几个页面函数:
(凑合着看我为大作业凑的辣鸡图orz)
这里的每个页面都是通过函数来实现的。通过函数来绘制窗口上的图片、文字,捕捉点击事件。
(下面我要开始复制我的程设报告了哈哈哈哈哈)
PAGE_WELCOM页面设计
该页面的最终显示效果如下:
该页面通过SFML库绘制窗口,并捕捉用户的点击位置,确认跳转的页面。具体代码如下所示:
(PAGE_WELCOM页面代码)
3、 PAGE_PLAY页面设计
该页面的为用户进行消消乐游戏的界面,该页面的最终显示效果如下图所示:
(PAGE_PLAY页面)
该页面主要可划分为返回按钮、分数显示、时间显示、游戏区域四个部分。主要函数如下图所示:
(PAGE_PLAY函数设计)
为了保障游戏的顺利进行,需要实现的函数较多,在此处仅选择较重要的函数进行代码展示。
- DOEVENT函数:
该函数在实现捕捉点击时间的同时,要判断点击次数,若为第二次点击,则要判断两次点击位置是否相邻,若相邻则进行交换。同时,在每次点击时,均播放点击音效。
- CHECK函数
CHECK函数用来检查是否存在相邻的同种类的三个以上的方块,若存在,则将其属性MATCH加1。具体代码如下图所示:
由于CHECK函数在WHILE循环中,因此,设置了积分的标志,保证每次消除只计一次分。
- DOMOVING函数
该函数实现两方块交换时的过程显示,通过每次改变两方块的位置实现。
- HUANYUAN函数
当未匹配时,则将两方块还原。
- XIAOCHU函数
该函数实现显示方块消除的过程,通过增大方块的透明度实现。
- UPDATEGRID函数
该函数在方块消除后,更新缺失的方块。
- DRAWBLOCKS函数
根据方块矩阵,在窗口中绘制方块。
- DRAWGRADE函数
将在CHECK中统计的积分在该函数中绘制在窗口中。
- DRAWTIME函数
将倒计时在窗口中绘制出来,通过TIME库中CLOCK函数实现。代码如下所示:
(DRAWTIME函数设计)
PAGE_GRADES页面设计
该页面显示最近的几条游戏记录,包括得分与日期、时间。如下图所示:
(PAGE_GRADES页面)
游戏记录为在PAGE_END页面时,通过OSTREAM写入了TXT文件中,在该页面只需读取、显示即可。
PAGE_END页面设计
该页面出现在游戏结束/中途退出时,显示最终游戏得分和三个选项,页面效果如下图所示:
(PAGE_END页面)
该页面的实现与PAGE_WELCOM类似,通过确定点击位置决定跳转的页面。具体实现细节不再赘述。
6、 PAGE_AUTHOR页面设计
该页面旨在象征性地显示作者信息,符合游戏设计的普遍规律,留下与玩家互动的渠道。具体效果如下图所示:
(PAGE_AUTHOR页面)
7、 其他要说明的内容
- 该游戏代码通过与点击事件绑定,添加了点击的音效,在选择页面、进行游戏时均有点击音效,同时添加有背景音乐。
- 由于在代码中使用了CTIME函数,会出现安全性报错,因此在首行定义了如下宏:
(宏定义)
- 方块信息存储于下图所示的结构体中
(结构体代码)
使用说明
我已经将项目源码上传到****中,在使用过程中要注意导入SFML库,具体步骤可参考文章开头处奇牛学院P1的教程。
项目环境:Visual Studio2019,Python 3.8
如有问题请直接评论或联系我邮箱[email protected]。