ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:186.95KB ,
资源ID:5363184      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5363184.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Qt贪吃蛇.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Qt贪吃蛇.docx

1、Qt贪吃蛇嵌入式大作业Ubuntu平台贪吃蛇游戏的设计与实现作 者 姓 名: 学科、专业 : 学 号 : 指 导 教 师: 完 成 日 期: 大连大学Dalian University教师批阅页选 题 分内 容 分格 式 分态 度 分总 计: 分简略给出评语或指出文中问题: 评 阅 人: 完成日期: 摘 要随着计算机的普及,电脑游戏也慢慢融入人们的生活中,成为人们放松心情的一种方式。贪食蛇作为一款经典且易于操作的游戏,一直受到人们的青睐,在繁忙的工作之余,玩贪食蛇游戏实在是既省钱又有趣味的休闲方式。本设计遵循C+程序设计的基础原理,制作出一个精美的贪吃蛇小游戏。本设计采用Qt Creater作

2、为主要的开发工具,很好的实现了贪吃蛇游戏的基本功能。关键词:C+; 贪吃蛇;Qt Creator摘 要 3前 言 1第一章 Qt库的优点 21.1可移植性 21.2易用性 21.3运行速度 2第二章 课程设计目的和要求 42.1主要研究内容 42.2目标(要求) 42.3 课程设计任务内容 4第三章 详细设计 53.1设计思想 53.1.1界面设计 53.1.2数据结构 63.2函数设计 83.2.1文件及函数组成 83.3.流程图 93.3.1系统流程图 93.3.2函数流程图 11第四章 程序测试 20第五章 设计心得与体会 25参考文献 26附录 27前 言 Qt Creator是跨平台

3、的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。 Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。 在功能方面,Qt Creator 包括项目生成向导、高级的 C+ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 GDB 调试前端,集成 qmake 构建工具等。 Qt Cre

4、ator 主要是为了帮助新 Qt 用户更快速入门并运行项目,还可提高有经验的 Qt 开发人员的工作效率。 使用强大的 C+ 代码编辑器可快速编写代码 语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能 使用浏览工具管理源代码 集成了领先的版本控制软件,包括 Git、Perforce 和 Subversion开放式文件,无须知晓确切的名称或位置搜索类和文件跨不同位置或文件沿用符号在头文件和源文件,或在声明和定义之间切换为Qt跨平台开发人员的需求而量身定制 集成了特定于Qt的功能,如信号与槽(Signals & Slots)图示调试器

5、,对Qt 类结构可一目了然集成了Qt Designer可视化布局和格式构建器只需单击一下就可生成和运行Qt项目。 虽然贪吃蛇游戏在我们的日常生活中是很常见的,但是作为普通的一款小游戏,他却有着极强的生命力,它的简单易行使之广泛的存在于电脑,手机等电子产品载体上,加上变化无穷、引人入胜,使它成为了一款受人喜欢的小游戏。第一章 Qt库的优点GUI工具包(或GUI库)是构造图形用户界面(程序)所使用的一套按钮、滚动条、菜单和其他对象的集合。在UNIX系统里,有很多可工使用的GUI库,其中之一就是Qt库,它是一个几乎C+编程语言的工具包。由于Qt是基于C+而不是C,故他的有点是速度快、易于使用,并具有

6、很好的可移植性。所以,当需要开发Unix或MS windows环境下的GUI程序时,Qt是最佳选择。1.1可移植性 Qt不只是适用于Unix,它同样适用于MS Windows。Windows平台下用标准库Microsoft Foudation Classes(MFC,Microsoft 基类),它不适用于其他平台。GTK或Xforms,又不能支持Windows平台。既适合windows平台又适合Linux平台的GUI工具包,那就是Qt。1.2易用性 Qt是一个C+工具包,它由几百个C+类构成,在程序中可以使用这些类。Qt是基于C+构造,所以具有OOP(object_oriented progr

7、amming)的优点。1.3运行速度 Qt非常容易使用,而且速度也很快。这两方面通常是不可能同时达到。GUI工具包,通常速度都不快,而Qt的这一有点归功于Qt开发者的功劳,他们大大优化了Qt的这一产品。Qt是一个GUI仿真工具包,这意味着它不使用任何本地工具包作调用。第二章 课程设计目的和要求2.1主要研究内容论述基于Qt下的贪吃蛇游戏设计。通过对Qt下的贪吃蛇游戏分析,结合游戏中的逻辑和操作需求,说明Qt下的贪吃蛇游戏设计的开发过程及各种技术细节;结合所要开发的系统的特点,采用Qt Creator开发工具。2.2目标(要求)对基于Qt下的贪吃蛇游戏设计逻辑级操作分析。设计一个简单,漂亮的贪吃

8、蛇游戏用以玩耍2.3 课程设计任务内容程序要求游戏时,分为两种模式,允许穿墙模式和禁止穿墙模式,可以随意选择切换。禁止穿墙模式:一条蛇在的围墙内, 围墙内会随机出现一个食物通过键盘上的4个方向键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体),则游戏结束。分数每增加100分,游戏等级升1级即速度加快1级。允许穿墙模式:如果蛇在移动过程中,撞到墙壁会穿过从该墙的对面传出,游戏不会结束,身体交叉(蛇头撞到自己的身体) ,则游戏结束。其他记分、等级规则与禁止穿墙

9、模式相同。第三章 详细设计3.1设计思想3.1.1界面设计这个游戏程序的关键是表示蛇的图形以及蛇的移动。用一个小小方格来表示蛇的一节身体,身体每长一节,增加一个小方格。移动时必须从蛇头开始,如果不按任何键,蛇自行在当前方向上向前移动,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,首先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇的整个身体,在界面的游戏框中随机出现一个静止静止不动的食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十分,界面开始更新,蛇的身体增加一节,游戏框中又会随机出现一个静止不动的食物在

10、禁止穿墙模式下,当蛇头碰到游戏框边框的时候或者蛇头碰到自己的身体的时候,游戏自动结束。在可以穿墙的模式下,蛇头碰到游戏框边框的时候,蛇会从该边框的对面穿出,游戏不会结束,当蛇头碰到自己的身体的时候,游戏结束。两种模式下,蛇每吃到一个食物,增加10分,分数每累积够百分,游戏等级增加1级,游戏速度加快1级,在游戏界面的上会有同步分数和等级的数码显示。在游戏中,还增加了游戏暂停功能,当游戏需要暂停时,按下暂停功能键p键,游戏在停,如果按下任意方向键,游戏继续。3.1.2数据结构QtSnake.h文件及类的设计如表3-1所示。表3-1文件名成员类型成员功能QtSnake.hpublicSnake(QW

11、idget* = 0)容器选取privatechar SnakeBodyMax2 int header_Index,Int tail_Indexint eat_X,eat_Y int level int speed int score,eatNum int map_row,map_col int Dir int step int tempx,tempy bool CanGoThroughWall bool hasMoved 程序所需变量QLCDNumber* levelNumber QLCDNumber* scoreNumber QLabel* label QLabel* levelLabel

12、 QLabel* scoreLabel QLabel* setlabel Qtimer* timer QPushButton* button 布局选取void iniWidget() void iniConnect() bool isEating() bool isGameOver() void iniGame() void changeScore() void changeLevel() QColor getColor()功能函数private slotsvoid doMoveSnake()void setEnableGoThroughWall()信号槽函数protectedvoid pai

13、ntEvent()void keyPressEvent()受保护函数类容器设计:class Snake : public QWidget Q_OBJECTpublic: Snake(QWidget* = 0);private: char SnakeBodyMax2; /存储蛇的身体坐标信息 int header_Index,tail_Index; /蛇头、尾在数组的位置 int eat_X,eat_Y; /出现吃的位置 int level; /等级 int speed; /蛇的速度 int score,eatNum; /得分 int map_row,map_col; /地图太小 int Dir

14、; /当前蛇移动方向 int step; /步距 int tempx,tempy; /蛇头下一位置临时存放 bool CanGoThroughWall; /是否能穿墙 bool hasMoved; /用于避免两次方向键之间间隔太小造成的错误 QLCDNumber* levelNumber; /等级LED QLCDNumber* scoreNumber; /分数LED QLabel* label; /游戏框 QLabel* levelLabel; /等级标签 QLabel* scoreLabel; /分数标签 QLabel* setlabel; /模式标示 Qtimer* timer; /游戏计

15、时器 QPushButton* button; /选择模式按钮 void iniWidget(); /初始化容器状态 void iniConnect(); /信号连接 bool isEating(); /蛇要吃食物 bool isGameOver(); /判断游戏结束 void iniGame(); /初始化游戏 void changeScore(); /更新得分 void changeLevel(); /更新等级 QColor getColor(); /食物变色private slots: void doMoveSnake(); /蛇移动每一步状态 void setEnableGoThrou

16、ghWall(); /设置是否允许穿墙protected: void paintEvent(QPaintEvent *); /绘画蛇身,食物 void keyPressEvent(QKeyEvent *event); /捕获按键信号;3.2函数设计3.2.1文件及函数组成 源文件函数名称功能main.cppmain总控函数,增加了编码格式,窗口标题QtSnake.cppSnake:Snake(QWidget *parent)初始化容器的总体状态void Snake:iniWidget()初始化容器中的各个窗口和标签的位置,字体大小,变量值void Snake:iniConnect()开启模式选

17、择按键,方向键,暂停键的信号捕捉void Snake:iniGame()初始化游戏的速度、级别、食物分数,蛇身坐标,食物坐标,计分器,级别器void Snake:doMoveSnake()每一步做一次游戏结束判断,然后改变蛇的状态,随机出现食物void Snake:setEnableGoThroughWall()判断穿墙变量,为真,设置为模式标示为“可以穿墙”模式为假为“禁止穿墙”模式void Snake:changeScore()蛇吃到食物的分数增加void Snake:changeLevel()改变游戏等级,速度bool Snake:isEating()蛇吃食物的状态实现bool Snak

18、e:isGameOver()首先判断游戏是否处于穿墙模式,穿墙模式下,蛇头碰到自己的身体游戏结束,禁止穿墙模式下,蛇头碰到边框或者身体游戏结束,游戏结束返回tureVoid Snake:paintEvent()游戏开始时,在随机坐标画出蛇身和食物,游戏中描绘蛇的运动轨迹,并随机补充食物void Snake:keyPressEvent()捕捉4个方向键和p键(暂停键)的信号QColor Snake:getColor()存放了8种颜色用于随机选取3.3.流程图3.3.1系统流程图开始载入游戏,初始化游戏界面按任意方向键开始游戏,随机出现一个食物,并用方向键控制蛇的游动方向游戏模式判断是否碰到自己的

19、身体是否碰到自己的身体 允许穿墙 禁止穿墙是否碰到墙壁 Y N N Y是否吃到食物 N Y蛇身增加1格,分数加10吃掉食物数*10是否等于分数 Y N保持原状等级加1,速度增加宣布死亡结束图3.13.3.2函数流程图main函数流程图如图3.2所示开始调用游戏主控函数调用编码函数,选择编码UTF-8设置游戏窗口标题贪吃蛇调用显示窗口函数,开始运行游戏结束如图3.2QColor Snake:getColor()函数流程图如图3.3所示开始将8种颜色放入一个8个元素的数组中随机选择一种颜色返回结束图3.3Snake:Snake(QWidget *parent)函数流程图如图3.4所示开始初始化游戏

20、窗口的位置,大小。默认游戏模式为禁止穿墙调用:容器初始化容器,槽函数初始化信号函数,游戏初始化函数结束图3.4void Snake:iniWidget()函数流程图如图3.5所示开始初始化:分数标签,分数LED,等级标签,等级LED,模式标示窗口(位置,大小,字体)初始化模式选择按钮的位置,大小,字体初始化提示窗口的位置,字体,大小初始化游戏框的位置,大小,边框宽度结束图3.5void Snake:iniConnect()函数流程图如图3.6所示开始捕捉信号:游戏控制键(上、下、右、左、暂停),模式改变按钮,其他调用模式改变槽函数调用游戏控制槽函数 游戏控制键 模式改变按钮 结束图3.6voi

21、d Snake:iniGame()函数流程图如图3.7所示开始初始化游戏:速度,吃食数,分数,等级将分数,等级初始值显示在LED上定义蛇身数组大小,随机获取蛇头和食物坐标时间暂时停止,暂时设定方向变量Dir=-1(没有方向,等待方向键信号)结束图3.7void Snake:doMoveSnake()函数流程图如图3.8所示开始游戏开始变量设为ture(游戏开始)判断游戏是否为结束状态蛇是否吃到食物游戏结束并显示提示信息“game over”,游戏状态设为最初状态吃到食物,蛇身加长1格,分数加10 Y N随机出现食物,并获取食物坐标食物坐标是否与蛇身重合 N Y将处理后的状态更新 结束图3.8v

22、oid Snake:setEnableGoThroughWall()函数流程图如图3.9所示开始穿墙判断变量取反判断变量时ture/false ture false 禁止穿墙允许穿墙结束图3.9void Snake:changeScore()函数流程图如图3.10所示开始蛇是否吃到食物 Y N分数加10,并且在LED上显示结束如图3.10void Snake:changeLevel()函数流程图如图3.11所示开始吃掉的食物乘以10是否等于分数 Y N不做改变,将原有等级在LED上显示等级加1,速度增加,吃食数量加10,并在LED显示结束图3.11bool Snake:isEating()函数

23、流程图如图3.12所示开始判断蛇头的当前坐标是否等于食物的坐标 Y N没有吃到返回false吃到食物返回ture结束图3.12开始是否能穿墙bool Snake:isGameOver()函数流程图如图3.13所示 能 不能蛇头是否碰到身体蛇头是否碰上身体 N N蛇头是否碰到墙壁 Y Y N Y函数返回ture(游戏结束)结束函数返回false(游戏继续) 图3.13void Snake:paintEvent(QPaintEvent *event)函数流程图如图3.14所示开始i = 蛇头的映射 画蛇的身体i != 蛇尾的映射 画出蛇的一个身体 Y N N游戏处于激活状态 画食物在坐标范围内随机

24、画出一个食物 结束 图3.14void Snake:keyPressEvent(QKeyEvent *event)函数流程图如图3.15所示开始捕捉按键信号:方向键(上、下、右、左),暂停键(p),其他判断输入的方向 方向键 其他 上 下 右 左是否与运动垂直是否与运动垂直是否与运动垂直是否与运动垂直 暂停键 暂停游戏 是 否 是 否 是 否 是 否向上运动向上运动向上运动向上运动向上运动向上运动向上运动向上运动结束 图3.15第四章 程序测试运行程序,默认是“禁止穿墙”模式,分数为0,等级为0。按下任意方向键,游戏开始,游戏窗口出现一个食物。此时蛇向下运动,分数是30吃到一个食物后,分数加1

25、0蛇吃掉10个食物,吃食数乘以10,等于分数100,等级加1“禁止穿墙”模式下蛇碰到墙壁游戏结束,消息框弹出“禁止穿墙”模式下蛇碰到自己身体游戏结束,消息框弹出“穿墙模式”下蛇从左边墙壁传入,从右边墙壁传出“穿墙模式”下蛇从下边墙壁传入,从上边墙壁传出“禁止穿墙”模式下蛇碰到自己身体游戏结束,消息框弹出第五章 设计心得与体会 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。这次编程我通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信

26、心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。 这个题目的选定是来源我学习生活的一个例子,从程序的选定到程序的构思,再到程序的编写都花了我很长的时间,几乎每天都熬夜,真得很辛苦,但完成后又有一种很踏实的感觉。编写程序很辛苦,尤其是基础不好的。不过三人行,必有我师:编程比较好的同学、编写其他程序的同学、老师都是我们相互学习的对象。感谢他们给了我很多意见,帮助了我很多,真正体会到合作的愉快。 通过这次的C+程序课程设计,熟练地掌握C+语言的知识点,熟悉当前常用的软件开发环境,解决实际问题的能力的强化训练,正确理解掌握C+面向对象程序设计的基本特性:类、对象、继承与派生、多态、虚函数、

27、模板、流类库等。但因为时间关系,只能把这次作为基点,有待改进,以后编程的话就不会产生恐惧心理,平时编程太少了。尤其是更熟悉文件的操作了,对C+语言也更熟悉了,也能够自己改程序中的错误,真的让我体会到编程是痛并快乐着。 参考文献1 (美)Bjarne Stroustrup 著。裘宗燕 译。C+程序设计语言(特别版)M.机械工业出版社。2 孙鑫 余安萍 编著,VC+深入详解M.电子工业出版社。3 王树伟 著, Visual C+游戏编程基础M.北京:电子工业出版社。4 谭浩强,张基温,C 语言程序设计教程(第 3 版)M高等教育出版社,1991 年 08 月。 5 成洁,卢紫毅,Linux 窗口设计Qt4 精彩实例设计分析M,清华大学出版社,2008.11。6 (加)布兰切特(Blanchette,J) (英)萨默菲尔德(Summerfield,M)著,闫锋欣译,C+GUI Qt4 编程(第二版)M.2008 年 08 月。7谭浩强著.C+程序设计(第二版)M.北京:清华大学出版社,2004。8刘燕君,刘振安,张一叶著.C+程序设计综合课程设计(第二版)M.北京:机械工业出版社,2009。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1