程设训练作业: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函数,会出现安全性报错,因此在首行定义了如下宏:
    在这里插入图片描述

(宏定义)

  • 方块信息存储于下图所示的结构体中
    在这里插入图片描述

(结构体代码)

使用说明

我已经将项目源码上传到CSDN中,在使用过程中要注意导入SFML库,具体步骤可参考文章开头处奇牛学院P1的教程。
项目环境:Visual Studio2019,Python 3.8
如有问题请直接评论或联系我邮箱971180567@qq.com。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值