版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 PAGE33 / NUMPAGES38基于vc的“连珠球”游戏设计“Link Ball” Game Design Based On VC专 业: 计算机科学与技术姓 名: 涂仪指 导 教 师:申请学位级别: 学 士论文提交日期: 2011.6.5学位授予单位: 科技大学摘 要休闲游戏是一种让人们在零散的闲暇时间中能够娱乐的小游戏,近几年在移动平台出风头。这类游戏的特点是:容单一,操作简单,游戏时间较短。本文的选题是以一种休闲游戏为出发点,基于VC开发环境,以C+语言为基础,实现单人操作的的智能“连珠球”动画游戏。首先,论述了选题的目的和意义,然后对常用的游戏开发语言进行了概要性的介绍,选择了
2、自己熟悉的C+语言作为开发语言,紧接着分析了此游戏软件要实现的功能,以与如何设计和实现这些功能,最后,简要地介绍了“连珠球”游戏软件的使用方法和一些游戏规则。本文深入讨论了“连珠球”游戏软件设计和实现的技术要点,本游戏软件实现了鼠标点击移动棋盘上的彩色球,使彩色球连成直线从而得分,并且能够在游戏正常退出时自动记录游戏进度和游戏得分。本文最后对智能“连珠球”动画游戏进行了总结与展望。通过研究并实现了“连珠球”游戏软件,论证了开发智能“连珠球”动画游戏的可行性。关键词: 游戏; C+语言; 智能; 动画; ABSTRACTCasual Game is a small game that enabl
3、e people enjoy it when they leisure, and itsteal 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 sin
4、gle player “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.I
5、n the end,I 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 reco
6、rded game schedule 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;目 录 TOC
7、 o 1-3 h z u HYPERLINK l _Toc296153661第一章绪论 PAGEREF _Toc296153661 h 1HYPERLINK l _Toc296153662第一节游戏有关背景 PAGEREF _Toc296153662 h 1HYPERLINK l _Toc296153663第二节目的与意义 PAGEREF _Toc296153663 h 2HYPERLINK l _Toc296153664第三节技术要求 PAGEREF _Toc296153664 h 3HYPERLINK l _Toc296153665第四节工具介绍 PAGEREF _Toc296153665
8、 h 7HYPERLINK l _Toc296153666第二章需求分析与概要设计 PAGEREF _Toc296153666 h 11HYPERLINK l _Toc296153667第一节游戏需求分析 PAGEREF _Toc296153667 h 11HYPERLINK l _Toc296153668第二节操作要求 PAGEREF _Toc296153668 h 11HYPERLINK l _Toc296153669第三节目标设计 PAGEREF _Toc296153669 h 12HYPERLINK l _Toc296153670第四节游戏概要设计 PAGEREF _Toc296153
9、670 h 13HYPERLINK l _Toc296153671第三章详细设计与实现 PAGEREF _Toc296153671 h 14HYPERLINK l _Toc296153672第一节界面设计 PAGEREF _Toc296153672 h 14HYPERLINK l _Toc296153673第二节存取设计 PAGEREF _Toc296153673 h 16HYPERLINK l _Toc296153674第三节输入输出 PAGEREF _Toc296153674 h 17HYPERLINK l _Toc296153675第四节游戏总体介绍 PAGEREF _Toc296153
10、675 h 20HYPERLINK l _Toc296153676第五节游戏回合 PAGEREF _Toc296153676 h 21HYPERLINK l _Toc296153677第六节寻路计算 PAGEREF _Toc296153677 h 23HYPERLINK l _Toc296153678第七节得分计算 PAGEREF _Toc296153678 h 27HYPERLINK l _Toc296153679结论 PAGEREF _Toc296153679 h 32HYPERLINK l _Toc296153680参考文献 PAGEREF _Toc296153680 h 33HYPER
11、LINK l _Toc296153681致 PAGEREF _Toc296153681 h 34第一章 绪论第一节 游戏有关背景电子游戏,又称电玩游戏,是指人通过电子设备,如电脑、 HYPERLINK :/baike.baidu /view/15830.htm t _blank 游戏机等,进行游戏的一种娱乐方式。用比较专业的话来概括就是:操纵计算机线路进行的游戏。有依靠电池供电的手控机关进行和利用电视屏幕、计算机终端进行,以与利用设在游艺室的大型设备进行等多种。始于20世纪60年代末。今已形成许多种电子游戏项目。如足球、棒球、 HYPERLINK :/baike.baidu /view/149
12、41.htm t _blank 国际象棋的电子游戏等,也有组字和数字的游戏。在电子游戏的形成和发展过程中,游戏软件的分类始终伴随着它。许多电子游戏都是从传统游戏中继承来的,其中图版游戏对电子游戏的发展产生了很大的作用。 电子游戏专用机产生在70年代初。1971年,一个还在MIT(麻省理工学院)学习的叫NolanBushnell的家伙设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间(ComputerSpace)。电脑空间的主题是两个玩家各自控制一艘围绕着具有强大引力的星球的太空战舰向对方发射导弹进行攻击。两艘战舰在战斗的同时还必须注意克服引力,无论是被对方的导弹击中还是没有成功摆脱引
13、力,飞船都会坠毁。这台业务机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,摆在一家弹子房里。不过很可惜,这台祖母业务机遭到了惨痛失败,失败的原因是当时的玩家认为这个游戏太过复杂,和当时美国流行的弹子球相比,这个游戏确实复杂了一点,不过我还是很怀疑当年美国玩家的素质。至此,历史上第一台业务用机以失败结束了它的命运。制作者NolanBushnell承认失败,但他仍然相信电子游戏的发展前景。许多人认为,电子游戏已经不单单是一种娱乐,已经成为了一种文化现象。有人将电子游戏视为一种艺术,也有人认为它对社会产生了不良影响,尤其是对青少年的身心健康有害。但是,现在电子游戏已经成为了人们生活中常用的一种
14、娱乐方式。现在越来越多的人通过玩游戏来达到娱乐休闲的目的,因此游戏很受人们的欢迎。现在人们生活的节奏非常快,伴随而来的是人们要面对多方面的压力。随着压力的积聚,人们的生活和工作都会受到这样或那样的影响。导致生活不愉快,工作不顺心。因此,很想找到一种释放压力的途径。而玩游戏正好可以给人们一种成就感,几乎任何人都渴望有成就感,而成就感指的是人以为自己做成了一件了不起的事时的感觉。做成的事越不得了,人就越有成就感。松弛,当人累了的时候所希望的东西。人不是机器,会疲劳,此时成就感的需求就降低了,对休息的需要上升,也就是希望能够松弛。现在的电子游戏大都不能松弛身体(反而增加身体疲劳),是通过松弛神经来做
15、到松弛的。如贪吃蛇、采蘑菇等小游戏。此类游戏主要是简单,不用费神。应当注意,某些人觉得简单的游戏,某些人却觉得麻烦。这样,对那些觉得麻烦的人,同样的游戏就不能起到松弛作用,所以松弛是有针对性的。通常可以在游戏中增加一些幽默成分以增加松弛作用。因此,开发一款让人能够达到松弛的目的,进而更好地生活和工作的游戏现得非常的重要。第二节 目的与意义设计目的电子游戏作为产业,其市场规模和产值已远远超过电影直逼电视;电子游戏作为文化,其“虚拟现实”强大的感染力和交互影响性,使得虚拟社区成为人们精神生活的家园之一,甚至是一种生存方式;电子游戏作为艺术,它的进入给艺术领域带来了“鲇鱼”效应,艺术景观急剧变化。数
16、码电影、网络文学、数码音乐、数码戏剧、电脑绘画、Flash动画、三维动画、电脑设计等,纷纷向电子游戏演变,电子游戏成为信息时代的主流艺术形式。电子游戏作为产业、文化没有争议,作为艺术,目前还不被公认。希望能从电子游戏艺术的定义出发,考察电子游戏的艺术属性,发掘电子游戏的艺术潜能,重塑电子游戏的审美价值。并且,我希望能通过游戏程度的设计,使自己熟练运用C+语言中的许多知识,如:类Class,模板template,结构Struct,标准库STL等。熟悉VC开发平台的使用和SDK函数。最终能增加编程的兴趣,提高编程水平,在以后的生活中运用所学到的知识为社会多做贡献。二、设计意义力争设计出人们喜欢的休
17、闲小游戏,给人们带来愉悦的心灵享受。给那些长期因工作压力比较大的人们提供一种释放压力的途径,使他(她)们更有激情地工作。同时,也实现了自我的人生价值。强调各人技术的另一方面,我还希望把电子游戏称为艺术,但也认识到电子游戏成为艺术的种种阻力。这种阻力不是来自技术桎梏,因为“摹尔”定律支配下的计算机与其网络技术正以越来越快的速度实现着人们的幻想,“不怕做不到,只怕想不到”是网络时代的座右铭。电子游戏成为艺术最大的阻力来自两个方面,一个是自身的异化现象,一个是来自传统艺术(包括艺术理论)领域的不屑和反对。商业资本的进入、唯利是图的商业运营,将电子游戏的负面因素肆意扩大,暴力、恐怖被作为噱头大加渲染。
18、为了商业利益利用情节、升级、宝物等手段将玩家无休止地固定在电脑屏幕前,使电子游戏成为一个没完没了的黑洞,将人的时间、生命耗费在游戏点卡上,使自由的电子游戏成为不自由的毒品。电子游戏将传统群体性的游戏变成了纯个人性的娱乐(网络上不用担心没有游戏伙伴),游戏不再受时空、道德伦理的限制,人的本性需要凸显。人的感性冲动在获得极大自由的同时,道德缺位、意义悬置、主体意识模糊接踵而至。在没完没了的技术升级、图像加速中,电子游戏的技术性畸形发展,艺术性被淡化。技术至上掩盖了人文关怀,人成为了技术的奴隶。电子游戏成为艺术的第二个阻力来自艺术家与理论家的生存危机。对艺术家而言,自己辛苦了一辈子,经历了无数艰辛终
19、于成为“艺术家”,很多时候艺术品之为艺术品,不是因为它具有艺术性而是因为它出自“艺术家”之手。网络时代“人人都可以成为艺术家”,呕心沥血的创作被怎么都行代替,其心理冲击可想而知。对于艺术理论家而言,他们饱读经典,经过无数引经据典建立起来的理论体系,面对异类的电子游戏艺术,他们最便捷的反应就是视而不见,拒之门外。他们以前的知识谱系从来没有这么苍白,从来没有听说过艺术评论不仅需要艰深的哲学美学艺术知识,还需要不断跟踪日新月异、飞速发展的高科技技术,以前最多只需了解一些自然辩证法、科学史以与基本的科学公理定律。因此在电子游戏已经兴起半个多世纪,网络游戏已经横行至少10年并成为最大的文化产业的今天,艺
20、术理论界仍然无动于衷。无论我们承认与否,电子游戏艺术的已曙光初现。艺术理论界的关注既有利于电子游戏艺术的健康成长,也必将成为新世纪艺术理论新的学术生长点。我们期盼着!第三节 技术要求一、程序设计语言那种语言适合开发游戏?下面列举了几种用于游戏开发的主要编程语言的介绍与其优缺点。(一)C语言如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序
21、,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN与COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能嵌到C代码中,所以,不需要连接独立的汇编模块
22、。优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。移植性:C语言的核心以与ANSI函数调用都具有移植性,但仅限于流程控制、存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。用C语言编写的游戏:非常非常多。(二)C+C+语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象
23、组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GDI和数据库的库实现为对象的集合。C+总是辩论的主题,尤其是在游戏开发论坛里。有几项C+的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C+程序将变得比一样功能的C程序来得大和慢。C+的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。我认为,C+的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇
24、编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言一样的缺点,大多数可移植性用户界面库都使用C+对象实现。使用C+编写的游戏:非常非常多。大多数的商业游戏是
25、使用C或C+编写的。(三)汇编语言(Assembly)显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程
26、序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。缺点:难学、语法晦涩、坚持效率,造成大量额外代码 不适于心脏虚弱者。移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理
27、器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。二、程序设计平台(IDE)开发平台IDE是一个比较大的概念,C+中称为IDE的不多,主要以编译器来区分开发环境。目前主流C+编译器有VC,BC,gcc。游戏程序一般都跑在PC机上,而PC机得操作系统大多是windows,因此VC是最好的选择。不过有的大型网络游戏(MMORPJ)的服务器会因为效率和安全问题跑在Linux下,这样就要用到gcc了。而“连珠球”只是
28、一个休闲小游戏,所以使用VC来开发。同时,客户端的开发必须熟悉windows的接口SDK,虽然windows有更专业的游戏接口DirectX,但是对SDK的熟悉也是必须的。三、数据结构与算法设计在游戏的编写中,不可避免的出现很多应用数据结构的地方,有些简单的游戏,只是由几个数据结构的组合,所以说,数据结构在游戏编程中扮演着很重要的角色。数据结构在游戏中的应用,包括对链表、顺序表、栈、队列、二叉树与图。在开始游戏编程只前,应对数据结构有所了解,并且熟悉C/C+语言的各种功用。(一)链表在游戏中,链表主要应用在有大规模删除,添加的应用上。不过,它也有相应的缺点,就是查询是顺序查找,比较耗费时间,并
29、且存储密度较小,对空间的需求较大。(二)顺序表如果通过对游戏数据的一些控制,限定大规模的添加,也就是确定了存需求的上限,可以应用顺序表来代替链表,在某些情况下,顺序表可以弥补链表时间性能上的损失。当然,应用链表,顺序表还是主要依靠当时的具体情况。(三)栈和队列栈和队列是两种特殊的线性结构,在游戏当中,一般应用在脚本引擎,操作界面,数据判定当中。在这一节中,主要通过一个简单的脚本引擎函数来介绍栈,队列和栈的用法很相似,便不再举例。我们在设置脚本文件的时候,通常会规定一些基本语法,这就需要一个解读语法的编译程序。这里列出的是一个语法检查函数,主要功能是检查“()”是否配对。实现思想:我们规定在脚本
30、语句中可以使用“()”嵌套,那么,便有如下的规律,左括号和右括号配对一定是先有左括号,后有右括号,并且,在嵌套使用中,左括号允许单个或连续出现,并与将要出现的有括号配对销解,左括号在等待右括号出现的过程中可以暂时保存起来。当右括号出现后,找不到左括号,则发生不配对现象。从程序实现角度讲,左括号连续出现,则后出现的左括号应与最先到来的右括号配对销解。左括号的这种保存和与右括号的配对销解的过程和栈中后进先出原则是一致的。我们可以将读到的左括号压入设定的栈中,当读到右括号时就和栈中的左括号销解,如果在栈顶弹不出左括号,则表示配对出错,或者,当括号串读完,栈中仍有左括号存在,也表示配对出错。这里只是介
31、绍脚本的读取,以后,我们在图的介绍中,会对脚本结构进行深入的研究。总之,凡在游戏中出现先进后出(栈),先进先出(队列)的情况,就可以运用这两种数据结构,例如,帝国时代中地表中间的过渡带。(四)二叉树树应用与其广泛,二叉树是树中的一个重要类型。在这里,我们主要研究二叉树的一种应用方式:判定树。其主要应用在描述分类过程和处理判定优化等方面上。上面的算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法。通过计算,两种算法的效率大约是2:3,很明显
32、,改进的算法在时间性能上提高不少。一般,在即时战略游戏中,对此类判定算法会有较高的时间性能要求,大家可以对二叉树进行更深入的研究。(五)图在游戏中,大多数应用图的地方是路径搜索,即关于A*算法的讨论。由于介绍A*算法与路径搜索的文章很多,这里介绍图的另一种应用:在情节脚本中,描述各个情节之间的关系。在一个游戏中,可能包含很多分支情节,在这些分支情节之间,会存在着一定的先决条件约束,即有些分支情节必须在其他分支情节完成后方可开始发展,而有些分支情节没有这样的约束。通过分析,我们可以用有向图中AOV网(Activity On Vertex Network)来描述这些分支情节之间的先后关系。另外,图
33、的另一个应用是在寻路上,著名的A*算法就是以此数据结构为基础,人工智能,也需要它的基础。第四节 工具介绍开发环境(Visual Studio)Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 HYPERLINK :/baike.baidu /view/28727.htm t _blank Visual Studio 是目前最流行的 HYPERLINK :/baike.baidu /view/4821.htm t _bl
34、ank Windows 平台应用程序开发环境。目前已经开发到 10.0 版本,也就是 Visual Studio 2010。Visual Studio 97 是最早的 Visual Studio 版本。包含有面向 Windows 开发使用的 Visual Basic 5.0、 HYPERLINK :/baike.baidu /view/100377.htm t _blank Visual C+ 5.0,面向 HYPERLINK :/baike.baidu /view/29.htm t _blank Java 开发的 HYPERLINK :/baike.baidu /view/422669.ht
35、m t _blank Visual J+ 和面向数据库开发的 Visual FoxPro,还包含有创建 DHTML (Dynamic HTML) 所需要的 Visual InterDev。其中,Visual Basic 和 Visual FoxPro 使用单独的开发环境,其他的开发语言使用统一的开发环境。 1998 年, HYPERLINK :/baike.baidu /view/2353.htm t _blank 微软公司发布了 Visual Studio 6.0。所有开发语言的开发环境版本均升至 6.0。这也是 Visual Basic 最后一次发布,从下一个版本 (7.0) 开始,Mic
36、rosoft Basic 进化成了一种新的 HYPERLINK :/baike.baidu /view/125370.htm t _blank 面向对象的语言:Microsoft Basic NET。由于微软公司对于 Sun 公司 Java 语言扩充导致与 Java HYPERLINK :/baike.baidu /view/1132.htm t _blank 虚拟机不兼容被 Sun 告上法庭,微软在后续的 Visual Studio 中不再包括面向 Java 虚拟机的开发环境。 2002 年,随着 .NET 口号的提出与 Windows XP / Office XP 的发布,微软发布了 Vi
37、sual Studio .NET(部版本号为 7.0)。在这个版本的 Visual Studio 中,微软剥离了 Visual FoxPro 作为一个单独的开发环境以 Visual FoxPro 7.0 单独销售,同时取消了 Visual InterDev。与此同时,微软引入了建立在 .NET 框架上(版本1.0)的托管代码机制以与一门新的语言 HYPERLINK :/baike.baidu /view/6590.htm t _blank C# (读作 C Sharp,意为 C+)。C# 是一门建立在 HYPERLINK :/baike.baidu /view/824.htm t _blank
38、 C+和 Java 基础上的现代语言,是编写 .NET 框架的语言。 .NET 的通用语言框架机制(Common Language Runtime, CLR),其目的是在同一个项目中支持不同的语言所开发的组件。所有 CLR 支持的代码都会被解释成为 CLR 可执行的机器代码然后运行。 Visual Basic、Visual C+ 都被扩展为支持托管代码机制的开发环境,且 HYPERLINK :/baike.baidu /view/459376.htm t _blank Visual Basic .NET更是从 Visual Basic 脱胎换骨,彻底支持面向对象的编程机制。而 Visual J
39、+ 也变为 Visual J#。后者仅语法同 Java 一样,但是面向的不是 Java 虚拟机,而是 .NET Framework。 2003 年,微软对 Visual Studio 2002 进行了部分修订,以 Visual Studio 2003 的名义发布(部版本号为 7.1)。Visio 作为使用 HYPERLINK :/baike.baidu /view/174909.htm t _blank 统模语言(UML)架构应用程序框架的程序被引入,同时被引入的还包括移动设备支持和企业模版。.NET 框架也升级到了 1.1。 2005 年,微软发布了 Visual Studio 2005。.
40、NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。 这个版本的 Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的 Visual Studio Express 版本。 随着即将发布的 HYPERLINK :/baike.baidu /view/7764.htm t _blank Windows Vista和 Office 2007,Visual Studio 9 也渐渐浮出水面。Visual Studio 9 目前可以确定的是支持建立于 DHTML 基础上的 AJax 技术,这种
41、微软在 Visual InterDev 时代提出的基于异步的 HYPERLINK :/baike.baidu /view/930.htm t _blank 客户端动态网页技术在当年并没有像微软预期中的那么流行起来,反而随着 GMail 等应用而东山再起,渐渐成为主流网络应用之一。同时 Visual Studio 9 会强化对于数据库的支持以与微软新的基于工作流(Workflow)的编程模型。预计为了保持与 Office 系列的统一,Visual Studio 9 的名称为 Visual Studio 2007。2007年11月,微软发布了 Visual Studio 2008 英文版,2008
42、年2月14日发布了简体中文专业版。2010年4月12微软发布Visual Studio 2010以与.NET Framework 4.0,并于2010年5月26发布了中文版。二、开发语言(Microsoft Visual C+)Windows编程并不比DOS编程难很多,只是在刚刚接触的时候感到头绪繁多,不知从何下手。实际上,如果你会C语言,你会发现Windows编程的难度并不比当年学C语言时大。DOS编程要想成为高手,也需要学习几百个函数(无论是TC、BC、MicrosoftC),并要深入了解 HYPERLINK :/baike.baidu /view/49.htm t _blank 汇编语言
43、级的DOS功能调用。而现在在Windows下,付出一样的工作量,你却可以获得几倍的收益。如果你以前熟悉DOS编程,现在再搞Windows编程,只要两个星期肯定会感到巨大的优越性:在DOS下,每一件事都要自己干,而且还有64K存、显示精度等的限制,实在是事倍功半了。 大多数大型软件(包括Windows自己)都是用C、C+编的,所以可以利用的源 HYPERLINK :/baike.baidu /view/41.htm t _blank 代码特别多。例如Photoshop,就有VC的 HYPERLINK :/baike.baidu /view/897136.htm t _blank 编程接口。的其他
44、的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。 VC适合组织大工程(VB就不行) BorlandC+或C+Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。 特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭著的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basi
45、c、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWorld”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学Windows编程的人。实际上,在Windows下显示“Helloworld”,最简单的方法只要5行就够了: #include“ HYPERLINK :/baike.baidu /view/1586331.htm t _blank windows.h” voidWinMain() MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplicati
46、on”,MB_OK); 当然这个程序只建立了一个最简单的对话框,但这已经够了。 如果你没有SDK编程的经验,学VC就是要利用MFC绕过Windows编程的许多细节。有好的工具为什么不用呢?现在你在VC写一个”HelloWorld”,只要写一行代码就可以了。 voidCYourView:OnDraw(CDC*pDC) /.其他的代码 pDC-TextOut(100,100,”HelloWorld!”); 但MFC不是万能的,WinAPI和VC中有很多功能在MFC中并不能反映出来。在入门后,要想发挥VC的完全能力,WindowsAPI还是非常重要的。而且,这些API在其他Windows语言中也用得
47、到。 学语言,与练武道理也差不多。VC、VB、Delphi、VFP,以与其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何 HYPERLINK :/baike.baidu /view/4009.htm t _blank 武功,招式即使再复杂,通常也能在很短时间记下来;但功就不是一朝一夕的事。而且,各门派的功不同,Unix、Linux门有Uinx的功,Apple(苹果)门有Mac的功,Java更是自成一派。我们这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌
48、握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。 一门高级语言与一门自然语言是类似的。关键要素有三: 语法:了解C和C+基本语法,这是比较容易的。 修辞:编程的艺术和风格。通常,这是与软件工程联系起来的。算法上的小伎俩并非是关键的。严谨,严格按照规去做,同时又能发挥出极大的创造性,才是 HYPERLINK :/baike.baidu /view/67814.htm t _blank 语言学家的本色。 词汇:如何利用别人的工作?如何利用自己以前的工作?这是一个软件工程师成功的关键。如果词汇量不丰富,就写不出好文章,就会有想法表达不出。一个人的语
49、法在上小学之前就基本上学成了,修辞水平也在年轻时就确定了,惟有词汇量需要根据需要不断学习、不断扩充。VC编程中,拥有大的词汇量就意味着要掌握较多的类、函数和其他编程组件。如:WindowsSDK,MFC,以与你所专攻的领域的现成的SDK,比如3D编程中的OpenGL,多媒体编程中的DirectX,图像处理中的Victor库。另外, HYPERLINK :/baike.baidu /view/185274.htm t _blank ActiveX控件的掌握往往也是成败的关键。我们这几年的工作也总结成了一个类库,叫IPX(图像处理框架),大大简化了图像处理的工作;不过现在还有很多细节问题要解决,如
50、果有同学感兴趣可以参与这方面的工作。 第二章 需求分析与概要设计第一节 游戏需求分析一、游戏功能需求分析游戏程序首先是以个计算机程序,所以它应该有计算机程序的基本功能:开始,退出,保存数据,读取数据等。同时它是一个游戏,必须时刻与玩家交互,所以要接受输入,表现输出,同时还要有游戏性。二、游戏性能需求(一)可靠性。由于游戏是用C语言编写的,C语言是面向过程的语言,结构比较紧凑而且可以直接对硬件进行操作,因此游戏的稳定性能很高。(二)流畅性。该游戏由于使用C语言编写的,而C编写的程序具有存需求更少,执行效率更高的特性,因此游戏能够在场景中非常流畅的运行,对玩者的视觉也是一种美的享受。(三)易操作性
51、。本游戏是通过按键盘上四个光标键来控制,具有简单易操作性。即使是游戏的初玩者,也能玩的游刃有余。第二节 操作要求一简要操作方法(一)打开“连珠球”游戏是.exe文件,在windows操作系统下双击打开。(二)开始游戏在界面菜单中选择“新游戏”可以重新开始游戏,选择“继续游戏”可以继续文件中保存的游戏。(三)操作“连珠球”游戏程序只相应鼠标左键消息。其他一些windows的热键,如Alt + F4将直接作用到窗口上,与游戏程序无关。(四)退出界面菜单中的选项“退出”可以关闭程序,此时不记录游戏。在游戏过程中,可通过窗口右上角的“关闭”按钮关闭程序,也可通过菜单“File” “退出”来关闭程序,此
52、时将记录游戏进度与得分。也可通过热键Alt + F4,资源管理器等其他方法关闭,但此时的操作不确定会不会记录游戏,建议不要使用。二游戏操作规则(一)菜单界面在界面菜单中,鼠标移动到菜单项上,该项变红色时说明该鼠标位置为该菜单的有效位置,点击将触发菜单项的效果。若菜单项不变,则该位置无效,程序将不处理该次点击操作。(二)游戏界面(1)没有选中彩球时没有选中彩球时点击彩球,视为选中该彩球,彩球用红色框线标记。点击空白位置视为无效操作。(2)有选中彩球时选中了某个彩球后,点击其他彩球,视为重新选择。后点击的彩球置为选中彩球,用红色框线标记,原来的彩球回复没有选中的状态。点击空白位置,视为一次移动命令
53、。如果有路径,则彩球以动画效果移动到该空白位置,否则移动失败,不做任何处理,彩球仍是选中状态,玩家继续点击其他位置。(三)游戏结束游戏结束时点击鼠标左键将返回界面菜单三程序其他功能(一)版本提示在系统菜单中选择“Help” “about”选项时,会有一个对话框弹出,对话框上记录了程序的版本信息。(二)最高得分界面菜单中有一个最高得分的选项,点击后可以看到使用本程序的玩家获得的最高得分记录。通过鼠标左键点击返回界面菜单。(三)窗口大小程序窗口是可以改变大小的,其长和宽可以是任意值。但是太大会使游戏界面不清楚,太小会使游戏中的字符显示不出来。第三节 目标设计一、程序逻辑设计(一)菜单界面玩家中途退
54、出游戏时会有一个自动保存的功能,当玩家再次进入时能让玩家选择继续上次的游戏还是开始新游戏,同时菜单界面还可以提供一些游戏的介绍,游戏的操作说明等。(二)保存与读取功能玩家在游戏过程中正常退出,程序就会在当前路径下创建一个save目录,用于记录游戏信息。相关游戏信息以txt格式写到这个目录下。玩家想继续上次得游戏时,从save目录中读取信息,并把txt信息转化成游戏信息表现出来。(三)输入获取鼠标操作的信息,并把鼠标在窗口中的坐标转换成游戏世界中的坐标。(四)输出为了把游戏世界表现出来,需要清晰的图片界面。考虑到部署难度,直接使用了windows SDK 中的GDI,用来绘制彩球,方块,线条,文
55、字等。二、游戏逻辑设计(一)游戏回合以一次彩球的成功移动为一回合。每回合开始,棋盘上随机三个位置会刷新三种颜色的彩球,同时窗口右边会显示下一回合出现在棋盘上的三种颜色。(二)寻找路径鼠标点击棋盘上的一个彩球时,视为选中该彩球,再次点击的地方为棋盘上的空格时,视为试图把彩球移动到点击位置,此时开始路径计算。彩球位置到空格位置有路径时,计算最短路径并把彩球位置改变,且回合结束。若没有通路,则视为放弃操作,玩家重新点选彩球。(三)计算得分回合结束时开始计算得分。以选择的彩球为中心,在棋盘的水平线,经线,以与对角线计算相邻的同种颜色的数量。若同种颜色的数量大于等于5则视为满足得分条件,在总得分上加上这
56、回合得分,回合结束。否则总得分不变,回合结束。第四节 游戏概要设计按照以上分析,本游戏应分为两大模块,其中又细分出几个模块。如图2-1所示:图2-1 “连珠球”游戏框图第三章 详细设计与实现第一节 界面设计一、界面总体布局游戏与其他应用程序在菜单上有一个重要的不同点。其他应用程序的菜单是为了方便用户使用其功能的,所以放在窗口的显眼位置。而游戏玩家与游戏的交互是持续不断的,没有必要强调菜单。还有,游戏是面向所有用户的,因此可以假定用户在玩游戏之前没有接触过游戏,那么一个用了介绍游戏自身的初始界面就比不可少。有鉴于此,游戏都是把菜单做在打开游戏应用程序的最开始。由于“连珠球”游戏比较简单,菜单只能
57、做成如图3-1所示:图3-1 “连珠球”游戏菜单二、界面功能介绍界面中可插入菜单,菜单在窗口中水平居中,垂直居中偏下。当鼠标移动到菜单的其中一个选项上时,该选项字体变红,并向左上方移动一个像素然后重绘,给玩家字体弹起的感觉。点击该菜单则触发对应函数,进入其他功能。三、核心代码/选中菜单项变红弹起效果,亮高显示选择菜单项int CGameSys:ShowChoiceMenu(WPARAM wParam, LPARAM lParam)int wPosX = LOWORD(lParam); int wPosY = HIWORD(lParam);HDC hdc = GetDC(g_hWnd);RECT
58、 rect;int wTempX, wTempY;SIZE sz;int wId = (wPosY - wMenuY) / (wBallSize * 1.5);if(wChooseMenuId != -1)rect.left = wMenuX;rect.right = wMenuX + wBallSize * 4;rect.top = wMenuY + wChooseMenuId * wBallSize * 1.5;rect.bottom = wMenuY + wChooseMenuId * wBallSize * 1.5 + 20;COLORREF cOldColor = SetTextCo
59、lor(hdc, BLACK);:DrawText(hdc, mpMenuwChooseMenuId.cMenuName, strlen(mpMenuwChooseMenuId.cMenuName), &rect, DT_CENTER);SetTextColor(hdc, cOldColor);wChooseMenuId = wId;if(wId = 0 & wId wTempX & wPosX wTempY & wPosY cBallColor();hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);hPen = CreatePen(PS_SOLID,
60、 1, lpBall-cBallColor();hOldPen = (HPEN)SelectObject(hdc, hPen);Ellipse(hdc, wBallSize * (lpBall-wCellPosX) + wGameX + wBallSize / 10, wBallSize * (lpBall-wCellPosY) + wGameY + wBallSize / 10, wBallSize * (lpBall-wCellPosX + 1) + wGameX - wBallSize / 10, wBallSize * (lpBall-wCellPosY + 1) + wGameY -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机器人在旅游规划服务的创新考核试卷
- 人工智能在医疗诊断上的优势和限制考核试卷
- 放射性金属矿床的地学指标选用与开发利用考核试卷
- 电气机械技术在化学工程与生物技术中的应用考核试卷
- 印刷业在文化传承中的作用考核试卷
- DB11T 765.2-2010 档案数字化规范 第2部分:纸质档案数字化加工
- 蜜蜂主题课件教学课件
- DB11∕T 1771-2020 地源热泵系统运行技术规范
- 幼儿园万圣节活动方案
- 做家务课件教学课件
- 4.2 气温的变化与分布 课前导学案-2024-2025学年七年级地理上学期人教版
- 住宅区和住宅建筑通信配套工程技术标准 DG-TJ08-606-2022
- 2024年新苏教版一年级上册数学全册课件(新版教材)
- 2024年湖北省中考地理试题(含解析)
- 幼儿园中班语言课件:香喷喷的轮子
- 广州离婚协议书(2024版)
- GB/T 44218-2024微型扬声器测量方法
- 北师大版小学六年级数学上册期中测试试题及答案
- GB/T 44144-2024有声读物
- 2025届高考语文复习:2024年全国各地高考语文语言文字运用试题分析及备课建议+课件
- 安全技术管理专业毕业实习报告范文
评论
0/150
提交评论