基于qt贪吃蛇游戏设计和实现

基于qt贪吃蛇游戏设计和实现

ID:6240896

大小:27.50 KB

页数:6页

时间:2018-01-07

基于qt贪吃蛇游戏设计和实现_第1页
基于qt贪吃蛇游戏设计和实现_第2页
基于qt贪吃蛇游戏设计和实现_第3页
基于qt贪吃蛇游戏设计和实现_第4页
基于qt贪吃蛇游戏设计和实现_第5页
资源描述:

《基于qt贪吃蛇游戏设计和实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Qt贪吃蛇游戏设计和实现  摘要:本文中描述的系统是基于Qt、C++技术在Windows开发环境下开发的一个操作简单、界面简洁、功能有所改进的“贪吃蛇”游戏。本文重点描述了四个模块的实现,尤其是模式管理模块,描述了设置小蛇是否可以穿墙,通过这一设置可以改变游戏的难度,增强游戏的趣味性,这是该设计的一大特点。【关键词】QT贪吃蛇模块C++贪吃蛇游戏是家喻户晓的益智类小游戏,本文中的贪吃蛇游戏是采用了一个跨平台的图形用户界面应用程序框架Qt,是在Windows的开发环境下结合Qt和C++技术开发的一款游戏,其中实现了贪吃蛇的移动,食物的随机出现,贪吃蛇的吃到食物后增长的功能,同时也

2、可以计算游戏玩家的分数和等级,来显示玩家的每次的游戏状态。同时,还添加了一个功能,允许玩家自己自由设置是否可以穿墙,因为随着玩家等级的增长,小蛇的移动速度会有所增加。当玩家的等级升到相对高的等级以后,小蛇的移动速度会比开始时候的速度快很多,在相对一定的活动范围内,游戏的难度就增大了。1游戏的流程图6系统中设计到的函数及函数之间的调用执行流程,在定义Snake对象时,系统自动调用构造函数初始化系统如图1所示:系统执行过程中的主要函数及他们之间的执行流程如图2所示:2游戏模块的设计与实现贪吃蛇游戏系统划分为八大模块:布局管理模块、初始化管理模块、模式管理模块、绘图管理模块、按键管理模块

3、、信号连接管理模块、更新管理模块、判断游戏结束管理模块。在此为读者描述其中四个模块。2.1模式管理模块模式管理模块主要由玩家自己自由设置是否可以穿墙,默认设置是禁止穿墙。玩家点击窗口“点击设置是否穿墙的”的按钮可以在允许穿墙和禁止穿墙之间切换模式。因为默认设置是禁止穿墙,因此一开始系统要判断当前模式是允许穿墙还是禁止穿墙,如果当前模式和默认设置不一样,那么系统就会认为当前模式是允许穿墙,那么点击后系统模式就会变为禁止穿墙;如果当前模式和默认设置相投,那么系统就会认为当前模式是禁止穿墙,那么点击后系统模式就会变为允许穿墙。2.2绘图管理模块要想在绘图设备(一般是窗口部件)上绘图,只需

4、创建一个6QPainter,再将指针传到该设备中。注意矩形的大小(宽和高)也许与你通常所用的所有不同。如果左上角和右下角相同,那么这个矩形的宽和高都为1。通常情况下,width=right-left+1并且height=bottom-top+1。这样设计是因为这样就可以使矩形空间可以用在绘制函数中,它的宽高就说明了所要绘制的象素。例如,我们画一个宽和高都为1的矩形为一个单一点象素。默认坐标系统的原点(0,0)在左上角。y轴的正方向向下,并且x轴的正方向从左到右。QRect::QRect(intleft,inttop,intwidth,intheight)构造一个上、左、宽、高分别为

5、top、left、width和height的矩形。利用Qrect函数可以在游戏区域里面画一定的背景颜色。用一个二维数组来存储小蛇的身体,第一维数组表示小蛇的身体长度,第二维数组表示她目前的位置坐标。设置绘图工具的画刷为蓝色和特定的style,利用Qpainter类中drawRect函数来画小蛇的身体,其中voidQPainter::drawRect(intx,inty,intw,inth)绘制左上角在(x,y)并且宽为w、高为h的矩形。这样初始的小蛇只占有一个空格的单位。如果小蛇身体增长可以用Qpainter类中drawLine函数来画增长的身体,其中voidQPainter::d

6、rawLine(intx1,inty1,intx2,inty2)绘制从(x1,y1)到(x2,y2)的直线并且设置当前画笔位置为(x2,y2)。62.3信号连接管理模块信号连接模块主要通过用户操作而引起的信号改变来操作系统的运行。Qt的窗口部件通过发射信号来表明一个用户动作已经发生了或者一个状态已经改变了。比如:当QTimer类提供了定时器信号和单触发定时器,当一定时间量用完以后或者触发了定时器,就会发射timeout()信号来调用doMoveSnake()私有槽[5],使得槽可以自动执行。接着当用户单击QpushButton按钮时,该按钮就会发射一个clicked()信号。信号可

7、以与函数(在这里我们把它称为槽slot)相连接,以便在发射信号的时候,槽可以得到执行。2.4更新管理模块更新管理主要是在小蛇吃掉食物后显示玩家的分数和等级会出现变化,小蛇每吃掉一个食物,玩家就会获得十分,然后逐步积累,每满一百分玩家的等级就会加一。其中玩家等级升高的同时,小蛇的速度就会变快。这个是利用QTime类中的start函数实现的,QTimer类提供了定时器信号和单触发定时器,voidQTime::start()函数设置这个时间为当前时间。这是实际上使用来计时的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。