连连看游戏的设计与实现毕业论文Word下载.docx

上传人:b****1 文档编号:4943990 上传时间:2023-05-04 格式:DOCX 页数:33 大小:541.28KB
下载 相关 举报
连连看游戏的设计与实现毕业论文Word下载.docx_第1页
第1页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第2页
第2页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第3页
第3页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第4页
第4页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第5页
第5页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第6页
第6页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第7页
第7页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第8页
第8页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第9页
第9页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第10页
第10页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第11页
第11页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第12页
第12页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第13页
第13页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第14页
第14页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第15页
第15页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第16页
第16页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第17页
第17页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第18页
第18页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第19页
第19页 / 共33页
连连看游戏的设计与实现毕业论文Word下载.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

连连看游戏的设计与实现毕业论文Word下载.docx

《连连看游戏的设计与实现毕业论文Word下载.docx》由会员分享,可在线阅读,更多相关《连连看游戏的设计与实现毕业论文Word下载.docx(33页珍藏版)》请在冰点文库上搜索。

连连看游戏的设计与实现毕业论文Word下载.docx

本文通过需求分析与方案论证,首先对开发连连看游戏程序进行初步的分析,然后通过总体设计和详细设计论述了系统的开发和实现过程。

关键词:

连连看;

单机游戏;

游戏开发

DesignandImplementationofLianliankangame

Abstract

Beginningin2001,thegameasanindustryhasbeengraduallyfortheChinesepublicacceptance,economicandsocialbenefitsitbrings,isnotestimatedinbeforethepeopletothegameasaveryimportantmeansofentertainmentthepublicaccepted,thegameindustryhasbeendestinedtobringhugeeconomicbenefits. 

Lianliankangameisaclassicgame,simpleoperation,suitableforallplayers.LianliankangamesoftwaredesignanddevelopmentoftheQTframeworkintheLinuxenvironment,youcanachievetheinitializationinterface,theuserusesthemousetoclickthesmallboxwithtwoidenticalpatternstoeliminate,andavarietyofmapstylesandpropsselect,richgameentertaining.Lianliankangamesbeautifulinterface,easyoperation,withsomeinteresting,isaleisureagestoshare. 

Thisarticlethroughthedemandanalysisandtheprojectconceptdemonstration,firsttodevelopslookedagainandagainthegameprocedurecarriesonthepreliminaryanalysis,thenelaboratedsystem'

sperformancehistorythroughthesystemdesignandthedetaileddesignaswellasrealizestheprocess.

KEYWORDS:

lianliankan;

stand-alonegame;

game-developme

第一章绪论

1.1课题背景

连连看是一款风靡很久的单机版游戏,对于玩家并不陌生,游戏规则非常简单,只要选择一对相同图案的卡片连接起来,连接路径若避开其他图片,且不超过两次转弯则消除此对卡片,容易上手。

改造成网络游戏增强了该游戏的竞技性,把原先单人在规定时间内完成游戏改变成了玩家间相互制约,相互竞争,可以多人组队合作完成游戏,增强了游戏的技巧性、竞技性、合作性。

连连看来源于街机游戏,是给一堆图案中的相同图案进行配对的简单游戏,一位叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。

饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟。

1.2课题意义

开发连连看游戏程序的目的是为了满足人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的,而且小游戏还不会浪费计算机过多的资源,不像大型游戏占资源和牵扯精力,可谓工作娱乐两不误[1]。

通过此次课题的设计,掌握如何制怍一个游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。

1.3国内外发展情况

电脑游戏在我国起步虽晚,发展却并不为慢。

作为后来者,国内业界同行们的信心、勇气和紧迫感曾经着实令玩家们欣慰。

让我们记住这些在国产游戏事业上曾经洒过汗水的年轻人,正是他们的创新精神和勇气,才使得国产游戏在并不宽松的环境下蓬勃发展至今。

与单机游戏日渐衰落正相反的是,网络游戏方兴未艾,遍地开花。

但是,与此同时,我们也看到了,在繁荣的背后,潜在的危机,一是来自国内游戏制作者在游戏制作理念上的不足和困乏,另外就是资金问题,这两方面与欧美游戏制作差距很大。

在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力。

这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”、“判断”能力反过来与人较量[2]。

连连看这款游戏来源于中国,现在已风靡全世界。

连连看游戏从出现到现在已经更新了好多版本,比较知名的有蔬果连连看、水晶连连看、阿达连连看和宠物连连看等不同版本,现在已经有FLASH版本,游戏起来更加方便,无需安装,打开网页即可游戏,最近更是出现网络版本,QQ连连看就是这样一款连连看游戏的网络版本,可以通过网络与其他玩家一起进行游戏,而且地图更为繁多,道具更为丰富,极大地增强了游戏的乐趣[3]。

1.4课题内容及目标

连连看游戏主要是鼠标两次蠃击的图片能否消去的问题。

当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。

在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;

如果没有,则不予处理。

此程序的课题内容及目标如下。

(l)有关卡的升级,每关游戏胜利后自动进入下一关并且游戏时间减少20秒。

(2)随机生成游戏界面。

(3)方块选中后图片要有突出显示。

(4)选择两个图案相同的方块,并以不超过两个转弯的连线将它们连接起来,便可以消除这对方块,每一局里玩家需要在规定的时间内消除所有的方块,当完成任务后,才能进入下一关卡。

(5)当没有可以消除的图案时可以使用重置功能,每次使用重置次数扣一点,游戏时间为0时游戏结束。

(6)选择提示功能时,游戏自动突出显示两个可以消除的方块,并且提示点数扣掉一点。

(7)可以控制游戏背景音乐开关,并且可以根据自己喜好更改背景音乐。

(8)游戏设置高手榜,破记录时予以记载。

通过对以上功能的实现,达到界面美观,操作简单,增加游戏的娱乐性、趣味性,使玩家对此游戏产生兴趣。

第二章需求分析与方案论证

2.1可行性分析

可行性分析(feasibilitystudy),世界上普遍采用的一种研究工程项目是否可行的科学。

它通过各种有效的方法,对工程项目进行分析,从技术、经济、财务等方面加以评价,最终给投资决策者提供是否选择该项目进行投资的依据。

可行性分析的焦点是:

要站在咨询的立场上;

站在中立客观立场上得出结论[4]。

2.1.1技术可行性分析

设计连连看游戏程序需要通过菜单和鼠标对游戏进行操控,游戏的界面需要大量的绘图机制,以达到操作简单、界面美观的目的。

Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。

它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。

Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。

Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。

Qt包括多达250个以上的C++类,还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。

甚至还包括正则表达式的处理功能。

作为Qt开发跨平台IDE的QtCreator包含了开发跨平台应用程序所需的全部功能。

所以,可以通过QtCreator实现菜单制作、鼠标操控和绘图功能鼠标交互功能的实现可以通过对鼠标左键被按下时触发的命令消息进行拦截,并重新写该消息的处理函数实现[11]。

综上所述,对于在技术上使用QT4.7.4编写连连看游戏是可行的。

2.1.2经济可行性分析

开发本程序首先需要计算机一台,奔腾3以上CPU,256MB以上内存,40G以上硬盘即可以,大约五千元左右。

软件方面,QT4.7.4简体中文版可以从官方网站下载,正版操作系统Linux简体中文专业版价格大约在两千元左右,购买书籍二百元,开发此程序需要的时间大约需要三个月左右的时间,其中所消耗的人工费每月一千元,共计三千元,所以开发此游戏程序的成本共计一万元左右。

开发出的产品倘若在因特网下载,一个注册码费用为十元,只需下载一千次即可收回成本。

在高速发展的信息时代,一千次的下载不成问题。

所以,从经济角度来讲,开发本程序是可行的。

2.1.3操作可行性分析

连连看游戏,只要将相同图案的两张方块用三根以内的直线连在一起就可以消除,规则简单容易上手。

游戏速度节奏快,画面清晰可爱,适合不同年龄的玩家。

丰富的道具加入,增强游戏的竞争性。

多样式的地图,使玩家在各个游戏水平都可以导找到挑战的目标,长期地保持游戏的新鲜感。

并且有提示和重列次数的奖励。

对于用户交互方式,这里选择鼠标交互方式。

下面简单描述一下通过实现的功能。

鼠标选取两个图案方块后,程序将自动判断所选定的两个方块是否能进行抵消操作,能进行则抵消。

在游戏过程中,我们不断重复上面描述的功能,直到游戏的胜利结束。

可以说,对于玩家操作起来很容易上手,即使是年龄大的玩家,也会通过很短时间的适应而熟悉连连看游戏的操作。

所以,从操作可行性角度分析开发此程序是可行的。

2.1.4分析结论

以上对于开发此程序分别从技术角度、经济角度和操作性角度进行了全面的分析,技术上使用QTCreator进行开发,通过网络下载回收成本,游戏画面美观、操作性强,适合所有人不同年龄段的玩家进行娱乐。

纵上所述,以QTCreator为工具开发连连看游戏的方案是可行的。

2.2需求分析

关于连连看的功能描述如下:

运行游戏并自动进行初始化工作,将游戏区域上方作为信息显示区域,并且通过菜单功能进行操控,菜单功能包括开始新游戏,开关和更改背景音乐,提示和重列功能以及积分榜功能。

游戏区域中心区域作为小方块的地图,由多种人物图案组成分布在不同位置,界面设有关卡、提示次数、重列次数、剩余时间以及积分的显示。

玩家可以通过选取相同的两个物件来对他们进行消除操作,直到将游戏区域中的所有方块对都被消除后为胜利,并且给予破记录后的提示功能。

对于资源的需求,图片资源必不可少,游戏中的小方块是一组图片资源,选用两组图案和排列完全相同但是背景色不同的两组图片作为小方块的初始状态和选定状态,每张图片共20个人物。

为了使游戏更具娱乐性,背景音乐及音效的添加也是必不可少的,所以此游戏程序也加入了的音乐文件资源。

第三章总体设计

3.1开发工具和运行环境

3.1.1开发工具

本程序采用QTCreator作为开发工具。

QtCreator是跨平台的QtIDE,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。

此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。

根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。

在功能方面,QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。

集成了特定于Qt的功能,如信号与槽(Signals&

Slots)图示调试器,对Qt类结构可一目了然集成了QtDesigner可视化布局和格式构建器只需单击一下就可生成和运行Qt项目[6]。

3.1.2运行环境

运行环境首先需要操作系统的支持,开发本程序使用虚拟Linux操作系统,及在Windows下安装虚拟机,再装上Ubuntu10.10系统,对显卡要求不高,都能满足显卡需求,还有音响用于播放音乐。

保证了以上的配置,就能保证使用QTCreator在虚拟的Ubuntu系统中开发连连看游戏程序环境的可行性。

3.2功能模块设计

本程序共分为两个个模块,即游戏模块、图形界面显示模块。

游戏模块可分为新游戏子模块、开关背景音乐子模块、更改背景音乐子模块。

提示子模块、重列子模块、积分榜子模块。

提示子模块和重列子模块作为游戏的特殊功能,增加游戏的趣味性。

音乐子模块用以清晰的显示音乐效果。

积分榜子模块用于记录游戏的积分信息,并且对于破记录给予提示。

图形界面显示模块包括棋子的显示、菜单的显示。

棋子显示子模块用于布置整个游戏界面。

菜单显示子模块能显示游戏的基本操作功能和游戏剩余时间、剩余重置和提示次数、游戏级别、游戏分数的显示和英雄榜的显示。

图3-1功能模块图

3.3算法设计

3.3.1游戏地图数据的设计

对于整个游戏区域,可以把它看作一个是由信息显示区域和图案方块游戏区域组成的地图。

图案方块游戏区域由图案小方块零散地分布在地图的不同位置区域,并且每一个图案小方块都有与其对应的完全一样的另外一个小方块。

图3-2游戏地图设计图

图案方块游戏区域被抽象成一个有坐标位置属性的平面,平面上零散的地分布着若干个小方块,并且这些小方块的人物图案起码是成对出现的,可以把游戏区域地图用一个数组arr_map[i][j]来表示,arr_map[i][j]是把地图设计成一个动态分配的int整型一维数组,对地图中的行列数的表达,用一个转换法即可。

在游戏开始前,需要对游戏的地图进行初始化。

设计一个初始化的类,信息的显示直接调用窗口类即可。

对于方块地图游戏区域的初始,设计为10x8大小的区域。

人物的种类共计20个图案,首先通过srand()设定随机数发生,然后通过rand()函数进行图片种类数量的选择。

至此,游戏地图设计完毕。

3.3.2图案方块连接判断的设计

对于选中的两个方块的销毁,它们必须符合以下三个条件:

(l)选中的两个图案相同。

(2)选中的两个方块之间在没有障碍物的情况下,可以用若干垂直的直线线段连起来。

(3)这些将它们连接起来的直线线段的折点不超过两个。

同种物件的连接方式大致可以分成以下3种:

(l)直连方式。

在直连方式中,必须要求所选定的两个方块在同一水平直线上,并且两个方块之间没有任何其它的图案方块。

在3种连接方式中,直连方式是最简单的。

(2)有一个折点的垂直线段连接。

所选定的两个方块如果通过折点的方式连接,那么对于折点来说,每个折点必定有且至少有一个坐标是和其一个目标点是相同的,即折点必定在两个目标点所在的X方向或Y方向的直线上。

此外,对于一个折点连接的情况,折点应该为第一个选中方块的横向现或纵向线与第二个选中方块的纵向线或横向线相交而得出。

还需说明的是,是这些所有可能连接的交线经过的每一个图案方块区域,它们都不允许被障碍物所阻挡。

(3)有两个折点的垂直线段连接。

这种方式的两个折点所连成的直线与两物件的直接连线可以构成平行线,因此可以根据这个规律,将达条水平线在游戏区域允许的条件上下移动,然后通过判断整条带垂直折点的曲线之间有无障碍物方式来确定是否可以联通。

经过上面较为详细的分析后,对选定的方块是否可以作抵消操作可以这样去设计,首先,对简单的直连情况进行判断,看其是否符合条件,假如不能,再加深一个级别的复杂度,对一个折点的情况进行判断,如果不符合条件,再对两个折点的情况进行判断。

3.3.3游戏胜利判断算法设计

与前面的两个选定方块能否抵消的判断功能相比,它的实现显得相当简单,只需对图案方块游戏区域所有方块进行判断就可以了,只要检测到地图中还有一个图案方块还没有被抵消,则证明游戏还没有结束,完成判断。

如果时间耗尽,则终止游戏。

如果地图中的所有小方块都被消除,则证明游戏已经胜利,如果打破记录,会弹出提示。

3.3.4游戏道具算法设计

在此游戏中的道具有重排和提示两种,在游戏进行的过程中,如果玩家暂时找不到可解的小方块,就可以使用道具功能。

重排功能是在原小方块位置不变的情况下,重新排列图案的顺序,以找到可解的小方块。

提示功能用于提示玩家一组可解的小方块,便于玩家可以继续进行游戏。

对于重排功能的实现,首先将所有小方块的位置编号暂时保存到内存中,然后随机地分布在有小方块的位置上,通过随机函数实现此功能。

对于提示功能,首先编写一个检查连接的类,判断选中的两个小方块是否可以进行消除操作,这个类可以被提示功能函数调用,也可以在检查是否有解时被调用。

在提示功能中,首先调用检查连接的类查找到一个可以连接的小方块,并且标记,然后更改其为选中状态,即改变颜色以达到醒目,用来提示玩家。

3.4相关技术与重点难点

3.4.1相关技术

信号与槽机制

信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。

信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。

信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码[5]。

在我们所熟知的很多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。

但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。

信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps。

所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。

当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。

这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。

槽用于接收信号,但它们是普通的对象成员函数。

一个槽并不知道是否有任何信号与自己相连接。

而且,对象并不了解具体的通信机制。

你可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。

总之,信号与槽构造了一个强大的部件编程机制。

3.4.2系统的重点难点

此程序的重点是鼠标的交互功能。

通过ClassWizard对鼠标左键被按下时触发的命令消息进行拦截技术来实现。

因为游戏的全部过程需要依靠鼠标操作,所以鼠标交互功能的设计是否人性化就成了此连连看游戏程序的重点。

此程序的难点是连连看游戏程序的连接线功能。

首先编写一个创建路径的类,通过这个类使游戏中消除小方块时能够找到一条可以连接的路径进行连线,然后通过一个画线的类进行连接。

第四章详细设计

4.1功能模块设计与实现

此连连看游戏程序根据模块的性质分为以下几大类:

基本功能模块,主要通过游戏的菜单显示出来,分为游戏模块、选项模块。

游戏绘图模块,包括小方块图案的载入以及游戏地图背景的绘制。

游戏交互模块,主要是快捷键和鼠标交互功能的实现。

游戏算法模块,包括游戏的连接判断算法以及游戏胜利判断的算法。

4.1.1游戏模块设计与实现

游戏模块中对于地图,初级设为10x8的地图,即横向为十个小方块,纵向为八个小方块。

由于地图的大小为十行八列共80个小方块,每个种类的人物设定出现4次为偶数,这样就可以实现成对的出现了,在游戏中可以完成配对。

这样以来,共80个小方块且每个人物出现4次,也就是说,共有20个人物[7]。

4.1.2选项模块设计与实现

选项模块中分为提示子模块、重列子模块、音乐子模块、更改背景音乐子模块以及积分榜子模块。

对于提示子模块和重列子模块,作为道具可以随时进行调用,并且有次数记录,当记录次数到达零以下,立即给出提示。

对于提示模块,采用遍历的方法进行查找,首先遍历同一种图块中出现在不同坐标位置的图案小方块,以此模拟第一次点击,然后遍历同一种图块的剩余的不同坐标图案小方块的出现,以此模拟第二次点击,判断前后2次模拟点击选中的不同位置的同种图块能否连通,能连通则高亮显示这2个图块,提示完成;

否则,继续检测连通情况直至找到为止。

对于重列模块,首先通过遍历的方法,依次读取各个位置的图片,增加到临时的图片列表中,然后再随机的循环依次在原来有图片的地方添加图片,从图片列表中删除用过的图片,不删除就会有可能重复了,最后进行刷新即可。

流程图如图4.1和图4.2所示。

图4-1重列功能判断流程图

图4-2提示功能判断流程图

背景音乐子模块通过使用Phonon这个多媒体框架来提供一般影音多媒体档案的播放。

再通过调用MediaObject类进行音乐的播放与暂停。

voidMainWindow:

:

on_actionBackSound_toggled(boolarg1)

{

if(arg1)

mediaObject->

play();

//音乐开始

else

pause();

//音乐暂停

}

改变背景音乐子模块通过调用QfileDialog类来提供一个可以用于选择音乐文件的对话框。

on_actionChangeBackSound_triggered()

QStringfileName=QFileDialog:

getOpenFileName(this,tr("

OpenFile"

)"

./"

tr("

Sounds(*.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2