基于VC的“连珠球”游戏设计学士学位论文.doc

上传人:仙人指路1688 文档编号:3769181 上传时间:2023-03-21 格式:DOC 页数:39 大小:242KB
返回 下载 相关 举报
基于VC的“连珠球”游戏设计学士学位论文.doc_第1页
第1页 / 共39页
基于VC的“连珠球”游戏设计学士学位论文.doc_第2页
第2页 / 共39页
基于VC的“连珠球”游戏设计学士学位论文.doc_第3页
第3页 / 共39页
基于VC的“连珠球”游戏设计学士学位论文.doc_第4页
第4页 / 共39页
基于VC的“连珠球”游戏设计学士学位论文.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《基于VC的“连珠球”游戏设计学士学位论文.doc》由会员分享,可在线阅读,更多相关《基于VC的“连珠球”游戏设计学士学位论文.doc(39页珍藏版)》请在三一办公上搜索。

1、基于vc的“连珠球”游戏设计“Link Ball” Game Design Based On VC专 业: 计算机科学与技术姓 名: 涂仪指 导 教 师: 申请学位级别: 学 士论文提交日期: 2011.6.5学位授予单位: 天津科技大学摘 要休闲游戏是一种让人们在零散的闲暇时间中能够娱乐的小游戏,近几年在移动平台中大出风头。这类游戏的特点是:内容单一,操作简单,游戏时间较短。本文的选题是以一种休闲游戏为出发点,基于VC开发环境,以C+语言为基础,实现单人操作的的智能“连珠球”动画游戏。首先,论述了选题的目的和意义,然后对常用的游戏开发语言进行了概要性的介绍,选择了自己熟悉的C+语言作为开发语

2、言,紧接着分析了此游戏软件要实现的功能,以及如何设计和实现这些功能,最后,简要地介绍了“连珠球”游戏软件的使用方法和一些游戏规则。本文深入讨论了“连珠球”游戏软件设计和实现的技术要点,本游戏软件实现了鼠标点击移动棋盘上的彩色球,使彩色球连成直线从而得分,并且能够在游戏正常退出时自动记录游戏进度和游戏得分。本文最后对智能“连珠球”动画游戏进行了总结与展望。通过研究并实现了“连珠球”游戏软件,论证了开发智能“连珠球”动画游戏的可行性。关键词: 游戏; C+语言; 智能; 动画; ABSTRACTCasual Game is a small game that enable people enjoy

3、 it when they leisure, and it steal and show at the Mobile Platforms. The features of this games is that content of a single, simple, games of shorter duration.This title based on the traditional “Link Ball” game and VC development environment.I use C+ programming language to realize single player “

4、Link Ball” game.First of all,I describe the purpose and intention of this title,then introduces the blueprint of programming language,for those idea,I choose C programming language for my tool to develop it.Second,I analyze the function I have realized in this design and how to do that.In the end,I

5、recommend usage and rules of the “Link Ball” game.This paper talked about design and technique points of “Link Ball” game deeply. This game software implemented that mouse click to move colored balls on the board, make the colored balls with a straight line to score. And ablility to recorded game sc

6、hedule and game scores when the game exit.At the end of this paper I make a summary and expectation to this field.Through research “Link Ball” game software source code,I demonstrate feasible possibility of developing intelligent snake game.KEY WORDS: game; C+; intelligence; flash;目 录第一章 绪论1第一节 游戏有关

7、背景1第二节 目的与意义2第三节 技术要求3第四节 工具介绍7第二章 需求分析与概要设计11第一节 游戏需求分析11第二节 操作要求11第三节 目标设计12第四节 游戏概要设计13第三章 详细设计与实现14第一节 界面设计14第二节 存取设计16第三节 输入输出17第四节 游戏总体介绍20第五节 游戏回合21第六节 寻路计算23第七节 得分计算27结 论32参考文献33致 谢34第一章 绪论第一节 游戏有关背景电子游戏,又称电玩游戏,是指人通过电子设备,如电脑、游戏机等,进行游戏的一种娱乐方式。用比较专业的话来概括就是:操纵计算机线路进行的游戏。有依靠电池供电的手控机关进行和利用电视屏幕、计算

8、机终端进行,以及利用设在游艺室内的大型设备进行等多种。始于20世纪60年代末。今已形成许多种电子游戏项目。如足球、棒球、国际象棋的电子游戏等,也有组字和数字的游戏。在电子游戏的形成和发展过程中,游戏软件的分类始终伴随着它。许多电子游戏都是从传统游戏中继承来的,其中图版游戏对电子游戏的发展产生了很大的作用。 电子游戏专用机产生在70年代初。1971年,一个还在MIT(麻省理工学院)学习的叫NolanBushnell的家伙设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间(ComputerSpace)。电脑空间的主题是两个玩家各自控制一艘围绕着具有强大引力的星球的太空战舰向对方发射导弹进

9、行攻击。两艘战舰在战斗的同时还必须注意克服引力,无论是被对方的导弹击中还是没有成功摆脱引力,飞船都会坠毁。这台业务机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,摆在一家弹子房里。不过很可惜,这台祖母业务机遭到了惨痛失败,失败的原因是当时的玩家认为这个游戏太过复杂,和当时美国流行的弹子球相比,这个游戏确实复杂了一点,不过我还是很怀疑当年美国玩家的素质。至此,历史上第一台业务用机以失败结束了它的命运。制作者NolanBushnell承认失败,但他仍然相信电子游戏的发展前景。许多人认为,电子游戏已经不单单是一种娱乐,已经成为了一种文化现象。有人将电子游戏视为一种艺术,也有人认为它对社会产生了

10、不良影响,尤其是对青少年的身心健康有害。但是,现在电子游戏已经成为了人们生活中常用的一种娱乐方式。现在越来越多的人通过玩游戏来达到娱乐休闲的目的,因此游戏很受人们的欢迎。现在人们生活的节奏非常快,伴随而来的是人们要面对多方面的压力。随着压力的积聚,人们的生活和工作都会受到这样或那样的影响。导致生活不愉快,工作不顺心。因此,很想找到一种释放压力的途径。而玩游戏正好可以给人们一种成就感,几乎任何人都渴望有成就感,而成就感指的是人以为自己做成了一件了不起的事时的感觉。做成的事越不得了,人就越有成就感。松弛,当人累了的时候所希望的东西。人不是机器,会疲劳,此时成就感的需求就降低了,对休息的需要上升,也

11、就是希望能够松弛。现在的电子游戏大都不能松弛身体(反而增加身体疲劳),是通过松弛神经来做到松弛的。如贪吃蛇、采蘑菇等小游戏。此类游戏主要是简单,不用费神。应当注意,某些人觉得简单的游戏,某些人却觉得麻烦。这样,对那些觉得麻烦的人,同样的游戏就不能起到松弛作用,所以松弛是有针对性的。通常可以在游戏中增加一些幽默成分以增加松弛作用。因此,开发一款让人能够达到松弛的目的,进而更好地生活和工作的游戏现得非常的重要。第二节 目的与意义一、 设计目的电子游戏作为产业,其市场规模和产值已远远超过电影直逼电视;电子游戏作为文化,其“虚拟现实”强大的感染力和交互影响性,使得虚拟社区成为人们精神生活的家园之一,甚

12、至是一种生存方式;电子游戏作为艺术,它的进入给艺术领域带来了“鲇鱼”效应,艺术景观急剧变化。数码电影、网络文学、数码音乐、数码戏剧、电脑绘画、Flash动画、三维动画、电脑设计等,纷纷向电子游戏演变,电子游戏成为信息时代的主流艺术形式。电子游戏作为产业、文化没有争议,作为艺术,目前还不被公认。希望能从电子游戏艺术的定义出发,考察电子游戏的艺术属性,发掘电子游戏的艺术潜能,重塑电子游戏的审美价值。并且,我希望能通过游戏程度的设计,使自己熟练运用C+语言中的许多知识,如:类Class,模板template,结构Struct,标准库STL等。熟悉VC开发平台的使用和SDK函数。最终能增加编程的兴趣,

13、提高编程水平,在以后的生活中运用所学到的知识为社会多做贡献。二、设计意义力争设计出人们喜欢的休闲小游戏,给人们带来愉悦的心灵享受。给那些长期因工作压力比较大的人们提供一种释放压力的途径,使他(她)们更有激情地工作。同时,也实现了自我的人生价值。强调各人技术的另一方面,我还希望把电子游戏称为艺术,但也认识到电子游戏成为艺术的种种阻力。这种阻力不是来自技术桎梏,因为“摹尔”定律支配下的计算机及其网络技术正以越来越快的速度实现着人们的幻想,“不怕做不到,只怕想不到”是网络时代的座右铭。电子游戏成为艺术最大的阻力来自两个方面,一个是自身的异化现象,一个是来自传统艺术(包括艺术理论)领域的不屑和反对。商

14、业资本的进入、唯利是图的商业运营,将电子游戏的负面因素肆意扩大,暴力、色情、恐怖被作为噱头大加渲染。为了商业利益利用情节、升级、宝物等手段将玩家无休止地固定在电脑屏幕前,使电子游戏成为一个没完没了的黑洞,将人的时间、生命耗费在游戏点卡上,使自由的电子游戏成为不自由的毒品。电子游戏将传统群体性的游戏变成了纯个人性的娱乐(网络上不用担心没有游戏伙伴),游戏不再受时空、道德伦理的限制,人的本性需要凸显。人的感性冲动在获得极大自由的同时,道德缺位、意义悬置、主体意识模糊接踵而至。在没完没了的技术升级、图像加速中,电子游戏的技术性畸形发展,艺术性被淡化。技术至上掩盖了人文关怀,人成为了技术的奴隶。电子游

15、戏成为艺术的第二个阻力来自艺术家及理论家的生存危机。对艺术家而言,自己辛苦了一辈子,经历了无数艰辛终于成为“艺术家”,很多时候艺术品之为艺术品,不是因为它具有艺术性而是因为它出自“艺术家”之手。网络时代“人人都可以成为艺术家”,呕心沥血的创作被怎么都行代替,其心理冲击可想而知。对于艺术理论家而言,他们饱读经典,经过无数引经据典建立起来的理论体系,面对异类的电子游戏艺术,他们最便捷的反应就是视而不见,拒之门外。他们以前的知识谱系从来没有这么苍白,从来没有听说过艺术评论不仅需要艰深的哲学美学艺术知识,还需要不断跟踪日新月异、飞速发展的高科技技术,以前最多只需了解一些自然辩证法、科学史以及基本的科学

16、公理定律。因此在电子游戏已经兴起半个多世纪,网络游戏已经横行至少10年并成为最大的文化产业的今天,艺术理论界仍然无动于衷。无论我们承认与否,电子游戏艺术的已曙光初现。艺术理论界的关注既有利于电子游戏艺术的健康成长,也必将成为新世纪艺术理论新的学术生长点。我们期盼着!第三节 技术要求一、程序设计语言那种语言适合开发游戏?下面列举了几种用于游戏开发的主要编程语言的介绍及其优缺点。(一)C语言如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和

17、FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。正由于它的系统编程根源,将C和汇编语言进行结

18、合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。用C语言编写的游戏:非常非常多。(二)C

19、+C+语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GDI和数据库的库实现为对象的集合。C+总是辩论的主题,尤其是在游戏开发论坛里。有几项C+的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C+程序将变得比相同功能的C程序来得大和慢。C+的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。我认为,C+的额外

20、开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言

21、相同的缺点,大多数可移植性用户界面库都使用C+对象实现。使用C+编写的游戏:非常非常多。大多数的商业游戏是使用C或C+编写的。(三)汇编语言(Assembly)显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主

22、要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。缺点:难学、语法晦涩、坚持效率,造成大量额外代码 不适于心

23、脏虚弱者。移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。二、程序设计平台(IDE)开发平台IDE是一个比较大的概念,C+中称为IDE的不多,主要以编译器来区分开发环境。目前主流C+编译器有VC,BC,gcc。游戏程序一般都跑在PC机上,而PC机得操作系统大多是windows,因此VC是最好的选择。不过有的大型网

24、络游戏(MMORPJ)的服务器会因为效率和安全问题跑在Linux下,这样就要用到gcc了。而“连珠球”只是一个休闲小游戏,所以使用VC来开发。同时,客户端的开发必须熟悉windows的接口SDK,虽然windows有更专业的游戏接口DirectX,但是对SDK的熟悉也是必须的。三、数据结构与算法设计在游戏的编写中,不可避免的出现很多应用数据结构的地方,有些简单的游戏,只是由几个数据结构的组合,所以说,数据结构在游戏编程中扮演着很重要的角色。数据结构在游戏中的应用,包括对链表、顺序表、栈、队列、二叉树及图。在开始游戏编程只前,应对数据结构有所了解,并且熟悉C/C+语言的各种功用。(一)链表在游戏

25、中,链表主要应用在有大规模删除,添加的应用上。不过,它也有相应的缺点,就是查询是顺序查找,比较耗费时间,并且存储密度较小,对空间的需求较大。(二)顺序表如果通过对游戏数据的一些控制,限定大规模的添加,也就是确定了内存需求的上限,可以应用顺序表来代替链表,在某些情况下,顺序表可以弥补链表时间性能上的损失。当然,应用链表,顺序表还是主要依靠当时的具体情况。(三)栈和队列栈和队列是两种特殊的线性结构,在游戏当中,一般应用在脚本引擎,操作界面,数据判定当中。在这一节中,主要通过一个简单的脚本引擎函数来介绍栈,队列和栈的用法很相似,便不再举例。我们在设置脚本文件的时候,通常会规定一些基本语法,这就需要一

26、个解读语法的编译程序。这里列出的是一个语法检查函数,主要功能是检查“()”是否配对。实现思想:我们规定在脚本语句中可以使用“()”嵌套,那么,便有如下的规律,左括号和右括号配对一定是先有左括号,后有右括号,并且,在嵌套使用中,左括号允许单个或连续出现,并与将要出现的有括号配对销解,左括号在等待右括号出现的过程中可以暂时保存起来。当右括号出现后,找不到左括号,则发生不配对现象。从程序实现角度讲,左括号连续出现,则后出现的左括号应与最先到来的右括号配对销解。左括号的这种保存和与右括号的配对销解的过程和栈中后进先出原则是一致的。我们可以将读到的左括号压入设定的栈中,当读到右括号时就和栈中的左括号销解

27、,如果在栈顶弹不出左括号,则表示配对出错,或者,当括号串读完,栈中仍有左括号存在,也表示配对出错。这里只是介绍脚本的读取,以后,我们在图的介绍中,会对脚本结构进行深入的研究。总之,凡在游戏中出现先进后出(栈),先进先出(队列)的情况,就可以运用这两种数据结构,例如,帝国时代中地表中间的过渡带。(四)二叉树树应用及其广泛,二叉树是树中的一个重要类型。在这里,我们主要研究二叉树的一种应用方式:判定树。其主要应用在描述分类过程和处理判定优化等方面上。上面的算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些

28、比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法。通过计算,两种算法的效率大约是2:3,很明显,改进的算法在时间性能上提高不少。一般,在即时战略游戏中,对此类判定算法会有较高的时间性能要求,大家可以对二叉树进行更深入的研究。(五)图在游戏中,大多数应用图的地方是路径搜索,即关于A*算法的讨论。由于介绍A*算法及路径搜索的文章很多,这里介绍图的另一种应用:在情节脚本中,描述各个情节之间的关系。在一个游戏中,可能包含很多分支情节,在这些分支情节之间,会存在着一定的先决条件约束,即有些分支情节必须在其他分支情节完成后方可开始发展,而有些分支情节没有这样的约束。通过分析,我们可以用有向图

29、中AOV网(Activity On Vertex Network)来描述这些分支情节之间的先后关系。另外,图的另一个应用是在寻路上,著名的A*算法就是以此数据结构为基础,人工智能,也需要它的基础。第四节 工具介绍一、 开发环境(Visual Studio)Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。Visual Studio 是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 10.0 版本,也就

30、是 Visual Studio 2010。Visual Studio 97 是最早的 Visual Studio 版本。包含有面向 Windows 开发使用的 Visual Basic 5.0、Visual C+ 5.0,面向 Java 开发的 Visual J+ 和面向数据库开发的 Visual FoxPro,还包含有创建 DHTML (Dynamic HTML) 所需要的 Visual InterDev。其中,Visual Basic 和 Visual FoxPro 使用单独的开发环境,其他的开发语言使用统一的开发环境。 1998 年,微软公司发布了 Visual Studio 6.0。所

31、有开发语言的开发环境版本均升至 6.0。这也是 Visual Basic 最后一次发布,从下一个版本 (7.0) 开始,Microsoft Basic 进化成了一种新的面向对象的语言:Microsoft Basic NET。由于微软公司对于 Sun 公司 Java 语言扩充导致与 Java 虚拟机不兼容被 Sun 告上法庭,微软在后续的 Visual Studio 中不再包括面向 Java 虚拟机的开发环境。 2002 年,随着 .NET 口号的提出与 Windows XP / Office XP 的发布,微软发布了 Visual Studio .NET(内部版本号为 7.0)。在这个版本的

32、Visual Studio 中,微软剥离了 Visual FoxPro 作为一个单独的开发环境以 Visual FoxPro 7.0 单独销售,同时取消了 Visual InterDev。与此同时,微软引入了建立在 .NET 框架上(版本1.0)的托管代码机制以及一门新的语言 C# (读作 C Sharp,意为 C+)。C# 是一门建立在 C+和 Java 基础上的现代语言,是编写 .NET 框架的语言。 .NET 的通用语言框架机制(Common Language Runtime, CLR),其目的是在同一个项目中支持不同的语言所开发的组件。所有 CLR 支持的代码都会被解释成为 CLR 可

33、执行的机器代码然后运行。 Visual Basic、Visual C+ 都被扩展为支持托管代码机制的开发环境,且 Visual Basic .NET更是从 Visual Basic 脱胎换骨,彻底支持面向对象的编程机制。而 Visual J+ 也变为 Visual J#。后者仅语法同 Java 相同,但是面向的不是 Java 虚拟机,而是 .NET Framework。 2003 年,微软对 Visual Studio 2002 进行了部分修订,以 Visual Studio 2003 的名义发布(内部版本号为 7.1)。Visio 作为使用统一建模语言(UML)架构应用程序框架的程序被引入,

34、同时被引入的还包括移动设备支持和企业模版。.NET 框架也升级到了 1.1。 2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。 这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本。 随着即将发布的 Windows Vista和 Office 2007,Visual Studio 9 也渐渐浮出水面。Visual Studio 9 目前可以确定的是支持建

35、立于 DHTML 基础上的 AJax 技术,这种微软在 Visual InterDev 时代提出的基于异步的客户端动态网页技术在当年并没有像微软预期中的那么流行起来,反而随着 GMail 等应用而东山再起,渐渐成为主流网络应用之一。同时 Visual Studio 9 会强化对于数据库的支持以及微软新的基于工作流(Workflow)的编程模型。预计为了保持与 Office 系列的统一,Visual Studio 9 的名称为 Visual Studio 2007。2007年11月,微软发布了 Visual Studio 2008 英文版,2008年2月14日发布了简体中文专业版。2010年4月

36、12微软发布Visual Studio 2010以及.NET Framework 4.0,并于2010年5月26发布了中文版。二、开发语言(Microsoft Visual C+)Windows编程并不比DOS编程难很多,只是在刚刚接触的时候感到头绪繁多,不知从何下手。实际上,如果你会C语言,你会发现Windows编程的难度并不比当年学C语言时大。DOS编程要想成为高手,也需要学习几百个函数(无论是TC、BC、MicrosoftC),并要深入了解汇编语言级的DOS功能调用。而现在在Windows下,付出相同的工作量,你却可以获得几倍的收益。如果你以前熟悉DOS编程,现在再搞Windows编程,

37、只要两个星期肯定会感到巨大的优越性:在DOS下,每一件事都要自己干,而且还有64K内存、显示精度等的限制,实在是事倍功半了。 大多数大型软件(包括Windows自己)都是用C、C+编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。的其他的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。 VC适合组织大工程(VB就不行) BorlandC+或C+Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与

38、其他的VisualStudio成员可以协调工作,对软件工程有利。 特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭著的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basic、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWorld”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学Windows编程的人。实际上,在Windows下显示“Helloworld”,最简单的方法只要5行就够了: #includ

39、e“windows.h” voidWinMain() MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplication”,MB_OK); 当然这个程序只建立了一个最简单的对话框,但这已经够了。 如果你没有SDK编程的经验,学VC就是要利用MFC绕过Windows编程的许多细节。有好的工具为什么不用呢?现在你在VC写一个”HelloWorld”,只要写一行代码就可以了。 voidCYourView:OnDraw(CDC*pDC) /.其他的代码 pDC-TextOut(100,100,”HelloWorld!”); 但MFC不是万能的,WinAPI

40、和VC中有很多功能在MFC中并不能反映出来。在入门后,要想发挥VC的完全能力,WindowsAPI还是非常重要的。而且,这些API在其他Windows语言中也用得到。 学语言,与练武道理也差不多。VC、VB、Delphi、VFP,以及其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但内功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何武功,招式即使再复杂,通常也能在很短时间内记下来;但内功就不是一朝一夕的事。而且,各门派的内功不同,Unix、Linux门有Uinx的内功,Apple(苹果)门有Mac的内功,Java更是自成一派。我们

41、这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。 一门高级语言与一门自然语言是类似的。关键要素有三: 语法:了解C和C+基本语法,这是比较容易的。 修辞:编程的艺术和风格。通常,这是与软件工程联系起来的。算法上的小伎俩并非是关键的。严谨,严格按照规范去做,同时又能发挥出极大的创造性,才是语言学家的本色。 词汇:如何利用别人的工作?如何利用自己以前的工作?这是一个软件工程师成功的关键。如果词汇量不丰富,就写不出好文章,就会有想法表达不出。一个人的语法在上小学之前就基本上

42、学成了,修辞水平也在年轻时就确定了,惟有词汇量需要根据需要不断学习、不断扩充。VC编程中,拥有大的词汇量就意味着要掌握较多的类、函数和其他编程组件。如:WindowsSDK,MFC,以及你所专攻的领域的现成的SDK,比如3D编程中的OpenGL,多媒体编程中的DirectX,图像处理中的Victor库。另外,ActiveX控件的掌握往往也是成败的关键。我们这几年的工作也总结成了一个类库,叫IPX(图像处理框架),大大简化了图像处理的工作;不过现在还有很多细节问题要解决,如果有同学感兴趣可以参与这方面的工作。 第二章 需求分析与概要设计第一节 游戏需求分析一、游戏功能需求分析游戏程序首先是以个计

43、算机程序,所以它应该有计算机程序的基本功能:开始,退出,保存数据,读取数据等。同时它是一个游戏,必须时刻与玩家交互,所以要接受输入,表现输出,同时还要有游戏性。二、游戏性能需求(一)可靠性。由于游戏是用C语言编写的,C语言是面向过程的语言,结构比较紧凑而且可以直接对硬件进行操作,因此游戏的稳定性能很高。(二)流畅性。该游戏由于使用C语言编写的,而C编写的程序具有内存需求更少,执行效率更高的特性,因此游戏能够在场景中非常流畅的运行,对玩者的视觉也是一种美的享受。 (三)易操作性。本游戏是通过按键盘上四个光标键来控制,具有简单易操作性。即使是游戏的初玩者,也能玩的游刃有余。第二节 操作要求一简要操

44、作方法(一)打开“连珠球”游戏是.exe文件,在windows操作系统下双击打开。(二)开始游戏在界面菜单中选择“新游戏”可以重新开始游戏,选择“继续游戏”可以继续文件中保存的游戏。(三)操作“连珠球”游戏程序只相应鼠标左键消息。其他一些windows的热键,如Alt + F4将直接作用到窗口上,与游戏程序无关。(四)退出界面菜单中的选项“退出”可以关闭程序,此时不记录游戏。在游戏过程中,可通过窗口右上角的“关闭”按钮关闭程序,也可通过菜单“File” “退出”来关闭程序,此时将记录游戏进度及得分。也可通过热键Alt + F4,资源管理器等其他方法关闭,但此时的操作不确定会不会记录游戏,建议不

45、要使用。二游戏操作规则(一)菜单界面在界面菜单中,鼠标移动到菜单项上,该项变红色时说明该鼠标位置为该菜单的有效位置,点击将触发菜单项的效果。若菜单项不变,则该位置无效,程序将不处理该次点击操作。(二)游戏界面(1)没有选中彩球时没有选中彩球时点击彩球,视为选中该彩球,彩球用红色框线标记。点击空白位置视为无效操作。(2)有选中彩球时选中了某个彩球后,点击其他彩球,视为重新选择。后点击的彩球置为选中彩球,用红色框线标记,原来的彩球回复没有选中的状态。点击空白位置,视为一次移动命令。如果有路径,则彩球以动画效果移动到该空白位置,否则移动失败,不做任何处理,彩球仍是选中状态,玩家继续点击其他位置。(三

46、)游戏结束游戏结束时点击鼠标左键将返回界面菜单三程序其他功能(一)版本提示在系统菜单中选择“Help” “about”选项时,会有一个对话框弹出,对话框上记录了程序的版本信息。(二)最高得分界面菜单中有一个最高得分的选项,点击后可以看到使用本程序的玩家获得的最高得分记录。通过鼠标左键点击返回界面菜单。(三)窗口大小程序窗口是可以改变大小的,其长和宽可以是任意值。但是太大会使游戏界面不清楚,太小会使游戏中的字符显示不出来。第三节 目标设计一、程序逻辑设计(一)菜单界面玩家中途退出游戏时会有一个自动保存的功能,当玩家再次进入时能让玩家选择继续上次的游戏还是开始新游戏,同时菜单界面还可以提供一些游戏

47、的介绍,游戏的操作说明等。(二)保存与读取功能玩家在游戏过程中正常退出,程序就会在当前路径下创建一个save目录,用于记录游戏信息。相关游戏信息以txt格式写到这个目录下。玩家想继续上次得游戏时,从save目录中读取信息,并把txt信息转化成游戏信息表现出来。(三)输入获取鼠标操作的信息,并把鼠标在窗口中的坐标转换成游戏世界中的坐标。(四)输出为了把游戏世界表现出来,需要清晰的图片界面。考虑到部署难度,直接使用了windows SDK 中的GDI,用来绘制彩球,方块,线条,文字等。二、游戏逻辑设计(一)游戏回合以一次彩球的成功移动为一回合。每回合开始,棋盘上随机三个位置会刷新三种颜色的彩球,同

48、时窗口右边会显示下一回合出现在棋盘上的三种颜色。(二)寻找路径鼠标点击棋盘上的一个彩球时,视为选中该彩球,再次点击的地方为棋盘上的空格时,视为试图把彩球移动到点击位置,此时开始路径计算。彩球位置到空格位置有路径时,计算最短路径并把彩球位置改变,且回合结束。若没有通路,则视为放弃操作,玩家重新点选彩球。(三)计算得分回合结束时开始计算得分。以选择的彩球为中心,在棋盘的水平线,经线,以及对角线计算相邻的同种颜色的数量。若同种颜色的数量大于等于5则视为满足得分条件,在总得分上加上这回合得分,回合结束。否则总得分不变,回合结束。第四节 游戏概要设计按照以上分析,本游戏应分为两大模块,其中又细分出几个模块

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号