基于Qt的贪吃蛇游戏设计与实现本科毕业设计论文.docx
- 文档编号:24876204
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:86
- 大小:4.17MB
基于Qt的贪吃蛇游戏设计与实现本科毕业设计论文.docx
《基于Qt的贪吃蛇游戏设计与实现本科毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Qt的贪吃蛇游戏设计与实现本科毕业设计论文.docx(86页珍藏版)》请在冰豆网上搜索。
基于Qt的贪吃蛇游戏设计与实现本科毕业设计论文
基于Qt的贪吃蛇游戏设计与实现
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
摘要
随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界。
人们不再拘泥于一小块天地,加班、出差成为现代人不可避免的公务。
而此时一款可以随时随地娱乐的游戏成了必需品。
贪吃蛇简单易行、操作方便、娱乐性极强,很好地满足了玩家的需求。
本系统开发平台为Windows7,应用基于Qt跨平台的图形用户界面应用程序框架,程序设计语言采用C++。
在系统设计过程中,使用了面向对象的分析、设计方法。
完全采用软件工程的方法进行需求分析、总体设计、总体实现和测试。
在程序设计中,探讨了用图形框架的方法解决问题,对设计其他图形用户界面具有重要的实际意义。
本设计实现了一个简单的贪吃蛇小游戏,该游戏不仅实现了简单的游戏操作功能,还实现了灵活的运作功能,而且具有简洁大方的图文外观。
此系统具有良好的界面和必要的交互信息,使操作人员能快捷简单的进行操作,给玩家一个有趣的游戏。
关键词Qt;程序设计语言C++;贪吃蛇
SnakegamedesignandimplementationbasedonQt
Abstract
Withthedevelopmentofthesociety,thequickeningpaceoflife,peoplemoreandmorepeoplejoinedtheglobalizationoftheworld.Peoplearenolongerlimitedtoasmallpieceofheavenandearth,overtime,travelinevitablyamodernbusiness.Atatimewhenaanywhereentertainmentgamebecameanecessity.Snakeissimple,easytooperate,entertainmentisextremelystrong,wellmeettherequirementsoftheplayer.
ApplicationdevelopmentplatformforWindows7,thissystemisbasedonQtcross-platformGUIapplicationframework,usingc++programminglanguage.Intheprocessofsystemdesign,usingtheobject-orientedanalysisanddesignmethod.Completelyusingthemethodofsoftwareengineeringneedsanalysis,overalldesign,implementationandtestingasawhole.Inprogramming,discussesthemethodofusinggraphicalframeworktosolvetheproblem,thedesignofothergraphicaluserinterface(GUI)hasimportantpracticalsignificance.
Thisdesignimplementsasimplesnakegame,thegameisnotonlyrealizethefunctionofsimpleoperation,andrealizethefunctionofflexibleoperation,andhasaconciseandeasybyappearance.Thissystemhasagoodinterfaceandtheinteractionofthenecessaryinformation,allowtheoperatortoquickandeasytooperate,togivetheplayersafungame.
KeywordsQt;C++programminglanguage;snake
绪论
贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面的原因是为了将我们的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对我们而言还是很神秘的。
我们希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。
希望通过这次实践,我们能从中提高自己的编程能力,并从中学会从零开始分析设计程序。
本游戏的开发是基于Qt跨平台的图形用户界面应用程序框架,用的是C++开发语言。
C++语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。
总得来说,C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。
它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。
另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。
C++语言最有意义的方面是支持面向对象的特征。
虽然与C的兼容使得C++具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
1嵌入式系统
1.1嵌入式系统
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。
嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
国内普遍认同的嵌入式系统定义为:
以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
1.2组成
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,
嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。
执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY智能机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。
1.2.1硬件层
硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。
在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。
其中操作系统和应用程序都可以固化在ROM中。
1.嵌入式微处理器
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
2.存储器
嵌入式系统需要存储器来存放和执行代码。
嵌入式系统的存储器包含Cache、主存和辅助存储器。
(1)Cache
Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。
Cache的主要目标就是:
减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。
(2)主存
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。
(3)辅助存储器
辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。
3.通用设备接口和I/O接口
嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。
每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。
外设的种类很多,可从一个简单的串行通信设备到非常复杂的802.11无线设备。
目前嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。
1.2.2中间层
硬件层与软件层之间为中间层,也称为硬件抽象层(HardwareAbstractLayer,HAL)或板级支持包(BoardSupportPackage,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。
该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
BSP具有以下两个特点。
硬件相关性:
因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法。
操作系统相关性:
不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。
实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。
设计一个完整的BSP需要完成两部分工作:
嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。
1.3特点
1.3.1可裁剪性
支持开放性和可伸缩性的体系结构。
1.3.2强实时性
EOS实时性一般较强,可用于各种设备控制中。
1.3.3统一的接口
提供设备统一的驱动接口。
1.3.4方便
操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。
提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
1.3.5强稳定性,弱交互性
嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。
嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
1.3.6固化代码
在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。
1.3.7适应性
更好的硬件适应性,也就是良好的移植性。
2开发环境及关键技术
2.1Qt
Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。
它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。
Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。
它具有:
(1)优良的跨平台特性
(2)面向对象
(3)丰富的API
(4)大量的开发文档
(5)XML支持
(6)Webkit引擎的集成,可以实现本地界面与Web内容的无缝集成
(7)用户自定义控件
(8)方便性
(9)国际化
(10)高性能的工具
(11)优越的绘画功能
(12)绘制2D/3D图形功能
2.2信号和槽机制
信号和槽作为QT的核心机制在QT编程中有着广泛的应用,要精通QT编程就必须对信号和槽有所了解。
信号和槽是一种高级接口,应用于对象之间的通信,他是QT的核心特性,也是QT差别于其他工具包的重要地方。
信号和槽是QT自行定义的一种通信机制,他独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler的QT工具,该工具是个C++预处理程式,他为高层次的事件处理自动生成所需要的附加代码。
在我们所熟知的非常多GUI工具包中,窗口小部件(widget都有一个回调函数用于响应他们能触发的每个动作,这个回调函数通常是个指向某个函数的指针。
不过,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程式更为简洁明了。
信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps所有从QObject或其子类(例如QWidget)派生的类都能够包含信号和槽。
当对象改动其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,他不知道另一端是谁在接收这个信号。
这就是真正的消息封装,他确保对象被当作一个真正的软件组件来使用。
槽用于接收信号,但他们是普通的对象成员函数。
一个槽并不知道是否有所有信号和自己相连接。
而且,对象并不了解具体的通信机制。
你能将非常多信号和单个的槽进行连接,也能将单个的信号和非常多的槽进行连接,甚至于将一个信号和另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将即时发射第二个信号。
总之,信号和槽构造了一个强大的部件编程机制。
2.2.1信号
当某个信号对其客户或所有者发生的内部状态发生改动,信号被一个对象发射。
只有定义过这个信号的类及其派生类能够发射这个信号。
当一个信号被发射时,和其相关联的槽将被即时执行,就象一个正常的函数调用相同。
信号-槽机制完全独立于所有GUI事件循环。
只有当所有的槽返回以后发射函数(emit)才返回。
如果存在多个槽和某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,不过他们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。
2.2.2槽函数
槽是普通的C++成员函数,能被正常调用,他们唯一的特别性就是非常多信号能和其相关联。
当和其关联的信号被发射时,这个槽就会被调用。
槽能有参数,但槽的参数不能有缺省值。
既然槽是普通的成员函数,因此和其他的函数相同,他们也有存取权限。
槽的存取权限决定了谁能够和其相关联。
同普通的C++成员函数相同,槽函数也分为三种类型,即publicslots、privateslots和protectedslots。
publicslots:
在这个区内声明的槽意味着所有对象都可将信号和之相连接。
这对于组件编程非常有用,你能创建彼此互不了解的对象,将他们的信号和槽进行连接以便信息能够正确的传递。
protectedslots:
在这个区内声明的槽意味着当前类及其子类能将信号和之相连接。
这适用于那些槽,他们是类实现的一部分,不过其界面接口却面向外部。
privateslots:
在这个区内声明的槽意味着只有类自己能将信号和之相连接。
这适用于联系非常紧密的类。
2.3布局管理
窗体上的所有的控件必须有一个合适的尺寸和位置。
Qt提供了一些类负责排列窗体上的控件,主要有:
QHBoxLayout,QVBoxLayout,QGridLayout,QStackLayout。
他们之间的继承关系如图2-1所示。
图2-1布局管理继承关系图
Qt中有三种方式对窗体上的控件进行布局管理:
绝对位置定位(absolutepositioning),手工布局(manuallayout),布局管理器(layoutmanagers)。
在QT中,Layout和Widget是相对独立的类,但是Layout本身单独存在并没有意义,需要和Widget配合使用。
而Widget本身不负责子控件的布局管理。
你可以认为,Layout类其实只是一组预先撰写好的代码,在父控件尺寸变化时,根据预设参数和子控件的各种Geometryhint,管理控件的位置和尺寸。
Layout首先是要通过QWidget:
:
setLayout函数,将一个QLayout类设置为控件的布局管理器。
这一步实际也将这个控件设置为QLayout类的父控件。
而后,通常通过QLayout:
:
addWidget()等函数,将widget添加到Layout类的布局管理体系中。
但是,Layout本身并不是Widget的父控件,因为QWidget类的父控件只能是QWidg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Qt 贪吃 游戏 设计 实现 本科 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)