本科毕业设计基于vc的连珠球游戏设计.docx
- 文档编号:10667334
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:43
- 大小:61.45KB
本科毕业设计基于vc的连珠球游戏设计.docx
《本科毕业设计基于vc的连珠球游戏设计.docx》由会员分享,可在线阅读,更多相关《本科毕业设计基于vc的连珠球游戏设计.docx(43页珍藏版)》请在冰豆网上搜索。
本科毕业设计基于vc的连珠球游戏设计
基于vc的“连珠球”游戏设计
“LinkBall”GameDesignBasedOnVC
专业:
计算机科学与技术
姓名:
涂仪
指导教师:
申请学位级别:
学士
论文提交日期:
2011.6.5
学位授予单位:
天津科技大学
摘要
休闲游戏是一种让人们在零散的闲暇时间中能够娱乐的小游戏,近几年在移动平台中大出风头。
这类游戏的特点是:
内容单一,操作简单,游戏时间较短。
本文的选题是以一种休闲游戏为出发点,基于VC开发环境,以C++语言为基础,实现单人操作的的智能“连珠球”动画游戏。
首先,论述了选题的目的和意义,然后对常用的游戏开发语言进行了概要性的介绍,选择了自己熟悉的C++语言作为开发语言,紧接着分析了此游戏软件要实现的功能,以及如何设计和实现这些功能,最后,简要地介绍了“连珠球”游戏软件的使用方法和一些游戏规则。
本文深入讨论了“连珠球”游戏软件设计和实现的技术要点,本游戏软件实现了鼠标点击移动棋盘上的彩色球,使彩色球连成直线从而得分,并且能够在游戏正常退出时自动记录游戏进度和游戏得分。
本文最后对智能“连珠球”动画游戏进行了总结与展望。
通过研究并实现了“连珠球”游戏软件,论证了开发智能“连珠球”动画游戏的可行性。
关键词:
游戏;C++语言;智能;动画;
ABSTRACT
CasualGameisasmallgamethatenablepeopleenjoyitwhentheyleisure,anditstealandshowattheMobilePlatforms.Thefeaturesofthisgamesisthatcontentofasingle,simple,gamesofshorterduration.
Thistitlebasedonthetraditional“LinkBall”gameandVCdevelopmentenvironment.IuseC++programminglanguagetorealizesingleplayer“LinkBall”game.Firstofall,Idescribethepurposeandintentionofthistitle,thenintroducestheblueprintofprogramminglanguage,forthoseidea,IchooseCprogramminglanguageformytooltodevelopit.Second,IanalyzethefunctionIhaverealizedinthisdesignandhowtodothat.Intheend,Irecommendusageandrulesofthe“LinkBall”game.
Thispapertalkedaboutdesignandtechniquepointsof“LinkBall”gamedeeply.Thisgamesoftwareimplementedthatmouseclicktomovecoloredballsontheboard,makethecoloredballswithastraightlinetoscore.Andablilitytorecordedgamescheduleandgamescoreswhenthegameexit.
AttheendofthispaperImakeasummaryandexpectationtothisfield.Throughresearch“LinkBall”gamesoftwaresourcecode,Idemonstratefeasiblepossibilityofdevelopingintelligentsnakegame.
KEYWORDS:
game;C++;intelligence;flash;
第一章绪论
第一节游戏有关背景
电子游戏,又称电玩游戏,是指人通过电子设备,如电脑、游戏机等,进行游戏的一种娱乐方式。
用比较专业的话来概括就是:
操纵计算机线路进行的游戏。
有依靠电池供电的手控机关进行和利用电视屏幕、计算机终端进行,以及利用设在游艺室内的大型设备进行等多种。
始于20世纪60年代末。
今已形成许多种电子游戏项目。
如足球、棒球、国际象棋的电子游戏等,也有组字和数字的游戏。
在电子游戏的形成和发展过程中,游戏软件的分类始终伴随着它。
许多电子游戏都是从传统游戏中继承来的,其中图版游戏对电子游戏的发展产生了很大的作用。
电子游戏专用机产生在70年代初。
1971年,一个还在MIT(麻省理工学院)学习的叫NolanBushnell的家伙设计了世界上第一个业务用游戏机,这个街机游戏的名字叫《电脑空间》(ComputerSpace)。
《电脑空间》的主题是两个玩家各自控制一艘围绕着具有强大引力的星球的太空战舰向对方发射导弹进行攻击。
两艘战舰在战斗的同时还必须注意克服引力,无论是被对方的导弹击中还是没有成功摆脱引力,飞船都会坠毁。
这台业务机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,摆在一家弹子房里。
不过很可惜,这台祖母业务机遭到了惨痛失败,失败的原因是当时的玩家认为这个游戏太过复杂,和当时美国流行的弹子球相比,这个游戏确实复杂了一点,不过我还是很怀疑当年美国玩家的素质。
至此,历史上第一台业务用机以失败结束了它的命运。
制作者NolanBushnell承认失败,但他仍然相信电子游戏的发展前景。
许多人认为,电子游戏已经不单单是一种娱乐,已经成为了一种文化现象。
有人将电子游戏视为一种艺术,也有人认为它对社会产生了不良影响,尤其是对青少年的身心健康有害。
但是,现在电子游戏已经成为了人们生活中常用的一种娱乐方式。
现在越来越多的人通过玩游戏来达到娱乐休闲的目的,因此游戏很受人们的欢迎。
现在人们生活的节奏非常快,伴随而来的是人们要面对多方面的压力。
随着压力的积聚,人们的生活和工作都会受到这样或那样的影响。
导致生活不愉快,工作不顺心。
因此,很想找到一种释放压力的途径。
而玩游戏正好可以给人们一种成就感,几乎任何人都渴望有成就感,而成就感指的是人以为自己做成了一件了不起的事时的感觉。
做成的事越不得了,人就越有成就感。
松弛,当人累了的时候所希望的东西。
人不是机器,会疲劳,此时成就感的需求就降低了,对休息的需要上升,也就是希望能够松弛。
现在的电子游戏大都不能松弛身体(反而增加身体疲劳),是通过松弛神经来做到松弛的。
如贪吃蛇、采蘑菇等小游戏。
此类游戏主要是简单,不用费神。
应当注意,某些人觉得简单的游戏,某些人却觉得麻烦。
这样,对那些觉得麻烦的人,同样的游戏就不能起到松弛作用,所以松弛是有针对性的。
通常可以在游戏中增加一些幽默成分以增加松弛作用。
因此,开发一款让人能够达到松弛的目的,进而更好地生活和工作的游戏现得非常的重要。
第二节目的与意义
一、设计目的
电子游戏作为产业,其市场规模和产值已远远超过电影直逼电视;电子游戏作为文化,其“虚拟现实”强大的感染力和交互影响性,使得虚拟社区成为人们精神生活的家园之一,甚至是一种生存方式;电子游戏作为艺术,它的进入给艺术领域带来了“鲇鱼”效应,艺术景观急剧变化。
数码电影、网络文学、数码音乐、数码戏剧、电脑绘画、Flash动画、三维动画、电脑设计等,纷纷向电子游戏演变,电子游戏成为信息时代的主流艺术形式。
电子游戏作为产业、文化没有争议,作为艺术,目前还不被公认。
希望能从电子游戏艺术的定义出发,考察电子游戏的艺术属性,发掘电子游戏的艺术潜能,重塑电子游戏的审美价值。
并且,我希望能通过游戏程度的设计,使自己熟练运用C++语言中的许多知识,如:
类Class,模板template,结构Struct,标准库STL等。
熟悉VC开发平台的使用和SDK函数。
最终能增加编程的兴趣,提高编程水平,在以后的生活中运用所学到的知识为社会多做贡献。
二、设计意义
力争设计出人们喜欢的休闲小游戏,给人们带来愉悦的心灵享受。
给那些长期因工作压力比较大的人们提供一种释放压力的途径,使他(她)们更有激情地工作。
同时,也实现了自我的人生价值。
强调各人技术的另一方面,我还希望把电子游戏称为艺术,但也认识到电子游戏成为艺术的种种阻力。
这种阻力不是来自技术桎梏,因为“摹尔”定律支配下的计算机及其网络技术正以越来越快的速度实现着人们的幻想,“不怕做不到,只怕想不到”是网络时代的座右铭。
电子游戏成为艺术最大的阻力来自两个方面,一个是自身的异化现象,一个是来自传统艺术(包括艺术理论)领域的不屑和反对。
商业资本的进入、唯利是图的商业运营,将电子游戏的负面因素肆意扩大,暴力、色情、恐怖被作为噱头大加渲染。
为了商业利益利用情节、升级、宝物等手段将玩家无休止地固定在电脑屏幕前,使电子游戏成为一个没完没了的黑洞,将人的时间、生命耗费在游戏点卡上,使自由的电子游戏成为不自由的毒品。
电子游戏将传统群体性的游戏变成了纯个人性的娱乐(网络上不用担心没有游戏伙伴),游戏不再受时空、道德伦理的限制,人的本性需要凸显。
人的感性冲动在获得极大自由的同时,道德缺位、意义悬置、主体意识模糊接踵而至。
在没完没了的技术升级、图像加速中,电子游戏的技术性畸形发展,艺术性被淡化。
技术至上掩盖了人文关怀,人成为了技术的奴隶。
电子游戏成为艺术的第二个阻力来自艺术家及理论家的生存危机。
对艺术家而言,自己辛苦了一辈子,经历了无数艰辛终于成为“艺术家”,很多时候艺术品之为艺术品,不是因为它具有艺术性而是因为它出自“艺术家”之手。
网络时代“人人都可以成为艺术家”,呕心沥血的创作被怎么都行代替,其心理冲击可想而知。
对于艺术理论家而言,他们饱读经典,经过无数引经据典建立起来的理论体系,面对异类的电子游戏艺术,他们最便捷的反应就是视而不见,拒之门外。
他们以前的知识谱系从来没有这么苍白,从来没有听说过艺术评论不仅需要艰深的哲学美学艺术知识,还需要不断跟踪日新月异、飞速发展的高科技技术,以前最多只需了解一些自然辩证法、科学史以及基本的科学公理定律。
因此在电子游戏已经兴起半个多世纪,网络游戏已经横行至少10年并成为最大的文化产业的今天,艺术理论界仍然无动于衷。
无论我们承认与否,电子游戏艺术的已曙光初现。
艺术理论界的关注既有利于电子游戏艺术的健康成长,也必将成为新世纪艺术理论新的学术生长点。
我们期盼着!
第三节技术要求
一、程序设计语言
那种语言适合开发游戏?
下面列举了几种用于游戏开发的主要编程语言的介绍及其优缺点。
(一)C语言
如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。
C语言是DennisRitchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。
C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。
在此之前,操作系统是使用汇编语言编写的,而且不可移植。
C语言是第一个使得系统级代码移植成为可能的编程语言。
C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。
因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。
事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。
函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。
优点:
有益于编写小而快的程序。
很容易与汇编语言结合。
具有很高的标准化,因此其他平台上的各版本非常相似。
缺点:
不容易支持面向对象技术。
语法有时会非常难以理解,并造成滥用。
移植性:
C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。
其他的东西都跟平台有关。
比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。
这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
用C语言编写的游戏:
非常非常多。
(二)C++
C++语言是具有面向对象特性的C语言的继承者。
面向对象编程,或称OOP是结构化编程的下一步。
OO程序由对象组成,其中的对象是数据和函数离散集合。
有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。
比如说,有很多的GDI和数据库的库实现为对象的集合。
C++总是辩论的主题,尤其是在游戏开发论坛里。
有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。
C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。
这将是一个还在进行,而且不可能很快得出结论的争论。
我认为,C++的额外开支只是使用更好的语言的小付出。
同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。
批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。
而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。
优点:
组织大型程序时比C语言好得多。
很好的支持面向对象机制。
通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
缺点:
非常大而复杂。
与C语言一样存在语法滥用问题。
比C慢。
大多数编译器没有把整个语言正确的实现。
移植性:
比C语言好多了,但依然不是很乐观。
因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
使用C++编写的游戏:
非常非常多。
大多数的商业游戏是使用C或C++编写的。
(三)汇编语言(Assembly)
显然,汇编是第一个计算机语言。
汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。
这意味着你将与处理器的底层打交道,比如寄存器和堆栈。
如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。
确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单—这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。
话虽不错,但是新技术让东西变得更易于使用。
总的来说,汇编语言不会在游戏中单独应用。
游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。
比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。
这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。
而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
特别注意:
语言的名字叫“汇编”。
把汇编语言翻译成真实的机器码的工具叫“汇编程序”。
把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
优点:
最小、最快的语言。
汇编高手能编写出比任何其他语言能实现的快得多的程序。
你将是利用处理器最新功能的第一人,因为你能直接使用它们。
缺点:
难学、语法晦涩、坚持效率,造成大量额外代码—不适于心脏虚弱者。
移植性:
接近零。
因为这门语言是为一种单独的处理器设计的,根本没移植性可言。
如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
使用汇编编写的游戏:
我不知道有什么商业游戏是完全用汇编开发的。
不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
二、程序设计平台(IDE)
开发平台IDE是一个比较大的概念,C++中称为IDE的不多,主要以编译器来区分开发环境。
目前主流C++编译器有VC,BC,gcc。
游戏程序一般都跑在PC机上,而PC机得操作系统大多是windows,因此VC是最好的选择。
不过有的大型网络游戏(MMORPJ)的服务器会因为效率和安全问题跑在Linux下,这样就要用到gcc了。
而“连珠球”只是一个休闲小游戏,所以使用VC来开发。
同时,客户端的开发必须熟悉windows的接口SDK,虽然windows有更专业的游戏接口DirectX,但是对SDK的熟悉也是必须的。
三、数据结构与算法设计
在游戏的编写中,不可避免的出现很多应用数据结构的地方,有些简单的游戏,只是由几个数据结构的组合,所以说,数据结构在游戏编程中扮演着很重要的角色。
数据结构在游戏中的应用,包括对链表、顺序表、栈、队列、二叉树及图。
在开始游戏编程只前,应对数据结构有所了解,并且熟悉C/C++语言的各种功用。
(一)链表
在游戏中,链表主要应用在有大规模删除,添加的应用上。
不过,它也有相应的缺点,就是查询是顺序查找,比较耗费时间,并且存储密度较小,对空间的需求较大。
(二)顺序表
如果通过对游戏数据的一些控制,限定大规模的添加,也就是确定了内存需求的上限,可以应用顺序表来代替链表,在某些情况下,顺序表可以弥补链表时间性能上的损失。
当然,应用链表,顺序表还是主要依靠当时的具体情况。
(三)栈和队列
栈和队列是两种特殊的线性结构,在游戏当中,一般应用在脚本引擎,操作界面,数据判定当中。
在这一节中,主要通过一个简单的脚本引擎函数来介绍栈,队列和栈的用法很相似,便不再举例。
我们在设置脚本文件的时候,通常会规定一些基本语法,这就需要一个解读语法的编译程序。
这里列出的是一个语法检查函数,主要功能是检查“()”是否配对。
实现思想:
我们规定在脚本语句中可以使用“()”嵌套,那么,便有如下的规律,左括号和右括号配对一定是先有左括号,后有右括号,并且,在嵌套使用中,左括号允许单个或连续出现,并与将要出现的有括号配对销解,左括号在等待右括号出现的过程中可以暂时保存起来。
当右括号出现后,找不到左括号,则发生不配对现象。
从程序实现角度讲,左括号连续出现,则后出现的左括号应与最先到来的右括号配对销解。
左括号的这种保存和与右括号的配对销解的过程和栈中后进先出原则是一致的。
我们可以将读到的左括号压入设定的栈中,当读到右括号时就和栈中的左括号销解,如果在栈顶弹不出左括号,则表示配对出错,或者,当括号串读完,栈中仍有左括号存在,也表示配对出错。
这里只是介绍脚本的读取,以后,我们在图的介绍中,会对脚本结构进行深入的研究。
总之,凡在游戏中出现先进后出(栈),先进先出(队列)的情况,就可以运用这两种数据结构,例如,《帝国时代》中地表中间的过渡带。
(四)二叉树
树应用及其广泛,二叉树是树中的一个重要类型。
在这里,我们主要研究二叉树的一种应用方式:
判定树。
其主要应用在描述分类过程和处理判定优化等方面上。
上面的算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。
首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法。
通过计算,两种算法的效率大约是2:
3,很明显,改进的算法在时间性能上提高不少。
一般,在即时战略游戏中,对此类判定算法会有较高的时间性能要求,大家可以对二叉树进行更深入的研究。
(五)图
在游戏中,大多数应用图的地方是路径搜索,即关于A*算法的讨论。
由于介绍A*算法及路径搜索的文章很多,这里介绍图的另一种应用:
在情节脚本中,描述各个情节之间的关系。
在一个游戏中,可能包含很多分支情节,在这些分支情节之间,会存在着一定的先决条件约束,即有些分支情节必须在其他分支情节完成后方可开始发展,而有些分支情节没有这样的约束。
通过分析,我们可以用有向图中AOV网(ActivityOnVertexNetwork)来描述这些分支情节之间的先后关系。
另外,图的另一个应用是在寻路上,著名的A*算法就是以此数据结构为基础,人工智能,也需要它的基础。
第四节工具介绍
一、开发环境(VisualStudio)
VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
VisualStudio是目前最流行的Windows平台应用程序开发环境。
目前已经开发到10.0版本,也就是VisualStudio2010。
VisualStudio97是最早的VisualStudio版本。
包含有面向Windows开发使用的VisualBasic5.0、VisualC++5.0,面向Java开发的VisualJ++和面向数据库开发的VisualFoxPro,还包含有创建DHTML(DynamicHTML)所需要的VisualInterDev。
其中,VisualBasic和VisualFoxPro使用单独的开发环境,其他的开发语言使用统一的开发环境。
1998年,微软公司发布了VisualStudio6.0。
所有开发语言的开发环境版本均升至6.0。
这也是VisualBasic最后一次发布,从下一个版本(7.0)开始,MicrosoftBasic进化成了一种新的面向对象的语言:
MicrosoftBasicNET。
由于微软公司对于Sun公司Java语言扩充导致与Java虚拟机不兼容被Sun告上法庭,微软在后续的VisualStudio中不再包括面向Java虚拟机的开发环境。
2002年,随着.NET口号的提出与WindowsXP/OfficeXP的发布,微软发布了VisualStudio.NET(内部版本号为7.0)。
在这个版本的VisualStudio中,微软剥离了VisualFoxPro作为一个单独的开发环境以VisualFoxPro7.0单独销售,同时取消了VisualInterDev。
与此同时,微软引入了建立在.NET框架上(版本1.0)的托管代码机制以及一门新的语言C#(读作CSharp,意为C++++)。
C#是一门建立在C++和Java基础上的现代语言,是编写.NET框架的语言。
.NET的通用语言框架机制(CommonLanguageRuntime,CLR),其目的是在同一个项目中支持不同的语言所开发的组件。
所有CLR支持的代码都会被解释成为CLR可执行的机器代码然后运行。
VisualBasic、VisualC++都被扩展为支持托管代码机制的开发环境,且VisualBasic.NET更是从VisualBasic脱胎换骨,彻底支持面向对象的编程机制。
而VisualJ++也变为VisualJ#。
后者仅语法同Java相同,但是面向的不是Java虚拟机,而是.NETFramework。
2003年,微软对VisualStudio2002进行了部分修订,以VisualStudio2003的名义发布(内部版本号为7.1)。
Visio作为使用统一建模语言(UML)架构应用程序框架的程序被引入,同时被引入的还包括移动设备支持和企业模版。
.N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 毕业设计 基于 vc 连珠 游戏 设计