基于QT的贪吃蛇游戏设计与实现-演示文稿_第1页
基于QT的贪吃蛇游戏设计与实现-演示文稿_第2页
基于QT的贪吃蛇游戏设计与实现-演示文稿_第3页
基于QT的贪吃蛇游戏设计与实现-演示文稿_第4页
基于QT的贪吃蛇游戏设计与实现-演示文稿_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于QT的贪吃蛇游戏设计与实现,开发软件名称:贪吃蛇小游戏项目任务提出者:太原理工大学软件学院、昆山杰普软件科技有限公司项目导师:王华、邵永波项目开发者:宋宁用户:广大游戏玩家本项目在windows7系统上使用Qt Creator开发应用程序,实现用户在电脑上玩简单灵活的贪吃蛇小游戏,采用C+作为软件的程序开发语言。,项目介绍,贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面的原因是为了将我们的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对我们而言还是很神秘的。我们希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。希望通过这次实践,我们能从中提高自己的编程能力,并从中学会从零开始分析设计程序。,选题背景,目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。电脑游戏经过短短30年的发展,已经成为影响公众生活,改变公众娱乐方式的重要产业。过去,人们主要是借助电影、电视、音乐等方式来娱乐。而今天,以游戏为代表的电子娱乐正在成为主流娱乐方式。游戏也正在迅速成长为一个庞大的产业。,可行性分析,本游戏的开发是基于Qt跨平台的图形用户界面应用程序框架,用的是C+开发语言。C+语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。总得来说,C+语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C+的普及和推广。,开发技术简单介绍,Qt是一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt很容易扩展,并且允许真正地组件编程。Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。,Qt的介绍,硬件条件:HP 6450b运行环境:qt-creator-win-opensource-2.4.1qt-win-opensource-4.8.1-mingw投入运行时间:待定,条件基础,在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的贪吃蛇游戏,可以让我们随时随地的享受游戏给我们带来的快乐与放松,让我们从繁重的日常生活中解脱出来。游戏的主界面应该力求简明美观,赏心悦目,以提高玩家对游戏的兴趣。游戏的控制应该做到易懂、易操作,以给玩家一个很好的游戏环境。,设计目标,利用Qt creator制作一个贪吃蛇的小游戏,要求:1.能够记录游戏分数2.能够根据玩家的分数提高,改变游戏难度等级3.能够设置贪吃蛇是否能穿墙4.能够用方向键控制贪吃蛇的方向移动5.能够用任意键开始贪吃蛇游戏6.能够用P键暂停贪吃蛇游戏7.能够判断什么时候游戏结束8能够查看游戏帮助,功能需求,由于本程序简单易操作,交互性好,对用户没有什么特别要求。一般用户经过几分钟练习就可以熟练掌握本游戏的规则。,用户特点,本设计所开发的是基于C+的一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出功能,分为:游戏主界面模块、游戏控制模块两个模块。游戏主界面模块:主要包括游戏图形区域界面、退出按钮、分数显示、难度提升等功能。游戏控制模块:主要完成游戏的开始、暂停、方向控制等功能。,模块设计,系统的逻辑模型,程序关键在于表示蛇的图形及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,在身体最后增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇尾新位置开始画出蛇,长度为保存蛇每个节点信息的数组的长度。食物的出现是先确定一组随机数,再填充方格,食物的消失是由于使用了更新函数,当吃掉食物后就不再重画本次食物,而是生成一组新的随机数,画新的食物。当设置游戏难度为不可穿墙时,蛇头的位置坐标和墙的坐标或者自己身体的某个节点的坐标相同时,蛇就死掉了,游戏结束。当设置游戏难度为可以穿墙时,蛇头的位置坐标和自己身体的某个节点的坐标相同时,蛇就死掉了,游戏结束。,基本设计思路,处理流程,函数调用关系,main.cpp 主函数文件 Snake.h 游戏的数据结构 snake.cpp 游戏的实现,程序结构,构建方法,编译方法: qmake -project & qmake & make,通过需求分析可知,本程序中需要以下数据结构:蛇的身体坐标信息、蛇头、尾在数组的位置、出现食物的位置、游戏等级、蛇的速度、玩家得分、地图大小、当前蛇的移动方向、蛇头下一个临时存放位置、是否能穿墙、移动判断等。一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。数组用来保存每一段的状态,数组的元素单位是节。且链表的第一个元素表示蛇的尾部。 贪吃蛇运动范围以左上角那点为(0,0),向右则x递增,向下则y递增。,数据结构,界面显示包括分数显示、等级显示、难度设置 、操作指导、贪吃蛇的活动区域、贪吃蛇、食物,界面设计,详细设计,Snake的构造函数,其中用到QLCDNumber、Qlabel、QPushButton,下面分别举一例子简述初始化。1. class QLCDNumber为LCD数字显示框,初始化Widget里的控件,2.class Qlabel代表标签,它是一个用于显示文本或图像的窗口部件,初始化Widget里的控件,3.class QPushButton为按钮,点击后发生事件。,初始化Widget里的控件,出现timeout()信号,转向槽函数doMoveSnake()处理。出现clicked()信号,转向槽函数setEnableGoThroughWall()处理连接方式:,信号连接函数,功能:首先判断游戏是否已经结束,若已结束,则显示结束信息,并通过iniGame()初始化游戏;若没有结束,则贪吃蛇移动一步。再通过isEating()判断贪吃蛇是否吃到食物,若吃到,则通过changeScore()改变分数,通过changeLevel()改变等级,并重新随机出现食物的位置,并保证不与蛇身位置重合;若未吃到,将蛇尾沿数组向前移动一个位置。,槽函数doMoveSnake(),功能:设置贪吃蛇是否能穿墙,其中只有能与不能两个选项,点击事件后,选项交替出现,同时改变难度显示标签的内容。,槽函数setEnableGoThroughWall(),功能:判断贪吃蛇是否吃到食物,isEating()函数,功能:更新得分,贪吃蛇吃到一个食物加10分,刷新分数,changeScore()函数,功能:判断贪吃蛇吃了多少食物,每吃够十个加一级,并提高贪吃蛇运动速度,若等级改变,更新等级,changeLevel()函数,功能:初始化游戏,设置贪吃蛇运动速度,分数,等级,随机产生蛇头、蛇尾位置信息与食物位置信息等。,iniGame()函数,功能:判断贪吃蛇是否撞墙或自己,先检查设置是可以穿墙还是不可以穿墙,并根据设置改变蛇的下一位置信息,若不可以穿墙,则要先判断是否撞墙,再判断是否撞自己;若设置为可以穿墙,则直接判断是否撞自己,并返回结果,isGameOver()函数,功能:绘制贪吃蛇的图像,绘制食物的图像,paintEvent(QPaintEvent *event),功能:捕获按键信号,包括方向键与P键,分别控制贪吃蛇的运动方向和游戏的开始,keyPressEvent(QKeyEvent *event),本系统设计的基本功能都已实现,在Windows7和Ubuntu下都可运行。,毕业设计是我作为一名学生即将完成本科学业的最后一次作业,它既是对学校所学知识的全面总结和综合应用,又为今后走向社会的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论