当前位置:文档之家› 毕业论文c++开发的坦克大战

毕业论文c++开发的坦克大战

本科生毕业论文(设计)

题目:坦克大战设计与研发

学生姓名: XX XX

学号: XXXXXXXXXXXX

专业班级: XXXXXXXXXXXXXXXX

指导教师:你懂得

PPT已上传需要程序代码另联系

完成时间: 2012年5月

目录

摘要...................................................... I Abstract ................................................... I I 引言 (1)

第一章绪论 (2)

1.1系统开发背景 (2)

1.2 任天堂和Battle City背景介绍 (3)

1.3 本系统的现实意义 (4)

第二章开发环境及相关技术的介绍 (5)

2.1开发环境 (5)

2.2 C++特点 (5)

2.3 HGE引擎简介 (7)

2.4 DirectX的特色 (10)

第三章系统设计 (13)

3.1坦克大战主要游戏规则 (14)

3.3 系统详细设计 (17)

3.4游戏中的碰撞检测 (22)

3.5游戏 AI (24)

3.6本游戏AI (26)

第四章系统调试与运行 (28)

4.1系统调试 (28)

4.2系统测试 (28)

4.3游戏截图 (28)

第五章结论 (30)

5.1 本程序的总结和展望 (30)

5.2 经验和感想 (30)

参考文献 (31)

致谢 (32)

附录 (33)

摘要

进入新的世纪以来,计算机游戏产业蓬勃发展,已经成为新世纪最热门的专业。

坦克大战是一款非常经典游戏,风靡全球,经久不衰,是学习面向对象的编程思想的理想实例。现在面向对象的计算机编程语言很多,都可以编程来实现。本文通过对一个坦克大战游戏的开发了解了整个游戏开发的过程。本文详细阐述了系统分析、需求分析、概要设计、详细设计、系统实现等软件开发过程。力求将所学到的知识在系统开发中得以全面的应用,并使系统在实际的操作中能按照设计的要求安全有效正确的运行。本文的坦克大战有完整的界面,能够实现人机大战。而且坦克大战游戏剧情非常简单,游戏的主角在保护好城堡的前提下,消灭所有的敌人,所以非常容易上手。但剧情简单并不代表过关简单。本文用到了碰撞算法,以及敌人坦克的智能控制。

本程序是用VC++编写的,拥有人机交互界面。本论文从以下二个方面来阐述:1.游戏的背景2.游戏的开发过程

关键词:游戏,坦克大战,VC++

Abstract

Since entering the new century, computer games industry grow flourishingly, it has become the new century the most popular professional.

A Battle City is a very classic game, swept the globe and lasting, and it is the study of object-oriented programming ideas ideal example. Now a lot of the object-oriented computer programming language can be actualized.Based on a Battle City development to know the entire game development process. This article detailed describes system analysis, needs analysis, outline design, detailed design, system implementation, such as software development process. Seeks to bring the acquired knowledge in the system to the development of a comprehensive application, and the system can be operated in the actual design requirements in accordance with the correct operation of safe and effective. In the paper the Battle City has completed interface, achieved human-machine war. The plot of the Battle City game is very simple. The protagonist in the game to protect the castle, under the premise of eliminating all enemies, it is easier to get started. But the plot does not mean a simple clearance simple. This paper uses a collision algorithm, the enemy tanks and intelligent control.

This procedure is programming by the Visual C++,having man-machine interface. This paper from the following two aspects to elaborate: 1. Background 2. Games development process

Keywords: Games, Battle City, VC++

引言

游戏是一项新兴事物,但游戏的发展十分迅速。在国外,游戏开发经历了20余年的风雨,现在已成为一个高技术,高利润和高速发展的行业。

在中国,游戏特别是网络游戏,构成了IT行业中新型的利润增长点,中国游戏产业也开始蓬勃发展。由于中国拥有最大数量的游戏玩家和用户,使得中国游戏市场已经成为全球最关注的市场。2011年中国整个游戏行业(包括网络游戏、手机游戏、网页游戏、家用游戏、单机游戏、掌机游戏、大型游戏、人才培养所有种类)的生产经营总收入超过 1158 亿元人民币,这可以看出游戏产业具有巨大商机。

现在人们工作的压力越来越大,休息的时候很少,为了让疲惫的心灵得以休息,开发了坦克大战的小游戏来让玩家轻松一会,该游戏操作十分简单,只要操作键盘上的方向键按住攻击键就可以玩该游戏,轻松享受玩游戏的喜悦,可操作性好,而且不会使玩家沉溺于该游戏,对玩家的学习和工作都起积极的作用。

第一章绪论

1.1系统开发背景

游戏软件业是一个新兴行业,存在着巨大的生存和发展空间,同时它也是一个存在社会争议的行业。

游戏的完整定义可以归纳为:一种由道具和规则构建而成、由人主动参与、有明确目标、在进行过程中包含竞争且富于变化的以娱乐为目的的活动,它与现实世界相互联系而又相互独立,能够体现人们之间的共同经验,能够体现平等与自由的精神。

游戏产业准确地讲应该叫做电子娱乐业,是指基于电子技术、计算机技术、软件技术、网络技术和无线技术的新型娱乐产业,分为单机游戏、网络游戏和无线游戏等几个部分。电子游戏业从诞生至今已经有几十年的时间,可仅仅在这短短的几十年的时间里,它却在发达国家的经济发展中发挥了显著的作用。

游戏软件业从诞生到现在,历经几代的发展,已进入了一个非常成熟的时期。对于我国而言,游戏软件业也有快速的发展,但是因为很多原因阻碍了这个产业的发展,如游戏软件研发人才缺乏,软件开发投入不足;对青少年的负面影响,一些不健康的游戏软件导致了社会对游戏软件的偏见;技术滞后等情况。

坦克大战游戏是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个坦克大战时代。究其历史,坦克大战最早还是出现在FC机上,现在又重新掀起这股让人沉迷的坦克大战风潮,它的规则简单,容易上手,且游戏过程变化无穷,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。这次练习的是在Visual studio C++ 2003上生成坦克大战游戏。Microsoft Visual C++是一个非常好的windows软件开发程序,很多的windows平台下的软件都是把它作为辅助工具编写出来的。现在使用得比较多的是6.0版和.NET版,随着版本的提高,Microsoft给我们提供的函数数据库也越来越方便,越来越丰富了。当完成时,觉得自己在不知不觉中已跨入了它的大门。使用Microsoft Visual studio C++ 几乎可以做出一切东西来,从即时战略到三维RPG游戏。当然还有各种应用软件了。如果要开发出更复杂的游戏,就还需要学习更多的东西,为了提高显

示速度,需要使用DirectX ,为了制作3D 图像,又要使用Direct3D 。由于游戏的流程和内部原理很复杂,所以需要学习数据结构、图形学…… 学习这么多专业知识需要很大的努力,不过我心中有一个梦想,那么再难的目标也能实现。“千里之行,始于足下”,尤其是在迈出了坦克大战的第一步之后,实际上,已经走进了软件开发,尤其是游戏开发的大门,前面的世界是美丽多彩而又充满挑战的。

1.2 任天堂和Battle City 背景介绍

FC(Family Computer)主机在欧美又称Nintendo Entertainment System (可译作任

天堂娱乐平台即NES )。FC 主机在游戏业界造成的巨大冲击众所周知,这款主机在当时事实上几乎占领了世界各地多个国家的整个游戏市场,并使得逐渐没落的北美游戏市场再度复苏。这款主机的性能比当时的多数主

机都要强大,而

价格上却便宜得多。主机所采用得处理器为CMOS 6502,一款已经淘汰的70年代中期产品。由于其价格便宜且极易使用,经过任天堂的改造后又焕发了全新活力。6502 芯片

cpu 主频为8 bit ,12 MHz ,内存8k ,画面 52色,同屏最多显示其中的13色,声音2个矩波,1个三角波,1个杂音,1个PCM 音频(见图1.1)。

Battle City 是其发售卡带中的一款力作,设置了35个关卡,可以双人操纵,画面设置了若干种类的建筑物和阻挡物,以消灭所有敌人为通关条件,并有接宝物等增加游戏效果的设置,画面精美,音效杰出,在PC 机的80386处理器仍未面世的当时,能在硬件上运行这样的2D 程序不得不令人惊叹,难怪常有人说游戏程序是最大限度发挥硬件水平的载体。其游戏界面如图1.2所示。

图1.1 80年代中期

图1.2 任天堂Battle City 的界面

1.3 本系统的现实意义

游戏本身是一种娱乐方式,能带给人们无尽的乐趣,而且游戏行业的发展还将会带动众多周边产业,如五金、塑料、机械、电子、显像管,高端机型甚至使用了40英寸以上的大屏幕背投、液晶显示器等,这些显像设备不但要依赖国内众多显像管生产企业提供支持,更要针对游戏的内容进行深入开发和优化,以适应游戏内容的飞速发展和变化,大大突破了传统家电类显像设备的限制,对国内显像管制造企业的发展、创新具有极大的推动作用,大型游戏机的外部框体制造涉及工业设计、模具加工、五金加工、塑料成形、特殊印刷等工艺流程,由此带动了一大批相关的零部件生产制造企业,而这些企业均为生产密集型企业,大幅度增加了劳动就业的需求。

1.4 Java、C语言、C++三种主流编程技术比较

Java 语言是一种跨平台,适合于分布式计算环境的面向对象编程语言。JAVA现在主要用在WEB开发,手机游戏及一些平台游戏的开发,因为它具有很好的跨平台性,在手机等各种电子产品上应用非常广泛。

C语言在运行速度上更快,因为C属于底层语言,它比JAVA更加亲近机器,所以在许多系统开发上一般是用C语言,比如我们常用的XP系统、LINUX系统,都是C语言开发的。跨平台的服务器端的嵌入式脚本语言。

C++多用于游戏引擎、反病毒、硬件驱动以及一些对运行效率要求比较高的应用程序。所以本系统采用C++。

第二章开发环境及相关技术的介绍

2.1开发环境

操作系统:Microsoft Windows XP

开发工具:Microsoft Visual Studio .NET 2003

游戏引擎:HGE

DirectX

2.2 C++特点

C++现在得到了越来越广泛的应用,它继承了C语言的优点,并有自己独到的特点,最主要是面向对象程序设计。

面对对象程序设计的特点:

1.抽象性

抽象一般是指从具体的实例中抽取出共同的性质并加以描述的过程。

2.封装性

封装是面向对象方法的重要的原则。所谓封装,就是将一个事物包装起来,使外界不了解它的详细内情。在面向对象的方法中,把某些相关的代码和数据结合在一起,形成一个数据和操作的封装体,这个封装体向外提供一个可以控制的接口,其内部大部分的实现细节则对外隐藏,从而达到对数据访问权限的合理控制。封装可以使得程序中各部分之间的相互影响达到最小,并且提高程序的安全性,简化代码的编写工作。

3.继承性

继承是软件复用的一种方式。通过继承,一个对象可以获得另一个对象的属性,并加入属于自己的一些特性。它提供了创建新类的一种方法,即从现有类创建新类。新类继承了现有类的属性和行为,并通过对这些属性和行为进行扩充和修改,增添自己特有的一些性质。

4.多态性

多态性也是面向对象程序设计的重要特性之一。简单地说,多态性就是一个接口,

多种方式。在基类中定义的属性和操作被派生类继承之后,可能具有不同的数据类型或表现出不同的行为,我们称之为多态性。也就是说,多态性表现为同一属性或操作在一般类及各特殊类中具有不同的语义。

C++作为一种面对对象的程序设计语言,具有这样的特点。并且C++拥有友好的界面和强大的功能,为用户提供了一个良好的windows系统下的可视化开发环境。在该环境下,用户可以开发任何用C++或C语言编写的程序,包括程序的建立、编辑、浏览、保存、打开、编译、链接、调试和优化等。更重要的是,使用C++提供的工具、向导以及MFC类库,可以在一个很短的时间里创建一个完整的windows应用程序,并且获得大量的在线帮助。

Microsoft Visual Studio .NET 2003 提供了强大和灵活的开发环境,可用于创建基于 Microsoft Windows 和基于 Microsoft .NET 的应用程序。它既可以用作集成开发系统,也可以用作一组独立的工具。Microsoft Visual Studio .NET 2003中的VC++包含下列组件:

Visual C++ 编译器工具。该编译器包含一些新功能,支持面向虚拟计算机平台(如公共语言运行库 (CLR))的开发人员。现在已经有面向 x64 和 Itanium 的编译器。该编译器仍支持直接面向 x86 计算机,优化了针对这两种平台的性能。

Visual C++ 库。其中包括行业标准活动模板库 (ATL)、Microsoft 基础类 (MFC) 库,以及各种标准库,如标准 C++ 库和 C 运行时库 (CRT)(该库已得到扩展,可以向引起安全问题的已知函数提供安全增强替代项)。新增的库是 C++ 支持库,其设计意图在于简化面向 CLR 的程序。

Visual C++ 开发环境。虽然可以从命令行使用 C++ 编译器工具和库,但开发环境却提供了对项目管理与配置(包括对大型项目的更好支持)、源代码编辑、源代码浏览和调试工具的强大支持。该环境还支持 IntelliSense,在编写代码时,该功能可以提供智能化且特定于上下文的建议。

除常规的图形用户界面应用程序外,Visual C++ 还允许开发人员生成 Web 应用程序、基于 Windows 的智能客户端应用程序以及适用于瘦客户端和智能客户端移动设备的解决方案。C++ 是世界上最流行的系统级语言,而 Visual C++ 则为开发人员提供了生成软件的世界级工具。

Visual C++ 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的 C++ 来开发出专业级的 Windows 应用程序。Visual C++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。在使用Visual C++开发应用程序的过程中,系统为我们生成了大量的各种类型的文件。

Visual C++采用的框架是MFC。MFC不仅仅是人们通常理解的一个类库。你如果选择了MFC,也就选择了一种程序结构,一种编程风格。MFC 是一个很大的、扩展了的 C++ 类层次结构,它能使开发 Windows 应用程序变得更加容易。MFC 是在整个 Windows 家族中都是兼容的,也就是说,无论是 Windows3.x、Windows95 还是 Windows NT,所使用的 MFC 是兼容的。每当新的 Windows 版本出现时,MFC 也会得到修改以便使旧的编译器和代码能在新的系统中工作。MFC 也回得到扩展,添加新的特性、变得更加容易建立应用程序。使用 MFC 的最大优点是它为你做了所有最难做的事。MFC 中包含了上成千上万行正确、优化和功能强大的 Windows 代码。你所调用的很多成员函数完成了你自己可能很难完成的工作。从这点上将,MFC 极大地加快了你的程序开发速度。

由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。

最后要指出的是MFC类库在提供的对象的各种属性和方法都是经过谨慎的编写和严格的测试,可靠性很高,这就保证了使用MFC类库不会影响程序的可靠性和正确性。

2.3 HGE引擎简介

HGE 是一个硬件加速(Hardware accelerated)的 2D 游戏引擎(Game Engine),HGE 是一个富有特性的中间件,可以用于开发任何类型的 2D 游戏。HGE 封装性良好,以至于你仅仅需要关系游戏逻辑(Game Logic),而不需要在意 DirectX,Windows 消息循环等。

HGE 架构在 DirectX 8.0 之上,能够跑在大多数的 Windows 系统上。

1.选用 HGE 的理由:

专业化 --- 专注于 2D 领域

简单化 --- 非常容易使用

技术优势 --- 基于 Direct3D API 有较好的性能和特性

免费 --- 对于个人或者商业用户都免费,遵循 zlib/libpng license

代码高度的一致性 --- 代码是否具有一致性,是衡量代码质量的标准之一(《 Code Reading: The Open Source Perspective》)。

2.体系结构:

HGE 有3个抽象层(layers of abstraction):

核心函数(Core Functions):处于核心的函数和例程(routines),被整个系统所依赖。

辅助类(Helper Classes):游戏对象相关的类,架构于 HGE Core Functions 层之上,辅助用户进行游戏开发。

创作工具(Authoring Tools):用于游戏开发的一组工具。

图2.1

从上图可以看见:

1)用于代码只需要架构在 HGE Helper Classes 之上。

2)通常游戏资源(Game Resources)需要使用 HGE 创作工具来产生。

3.体系结构概述:

Core Functions 层:

1)图形格式支持:支持 BMP, JPG, PNG, TGA, DDS, DIB 文件格式。

2)支持窗口模式和全屏模式。

3)音频支持和音乐回放(music playback):支持 WAV, MP3, MP2, MP1 and OGG 音频文件格式(audio file formats),支持 MO3, IT, XM, S3M, MTM, MOD and UMX 音乐文件格式(music file formats),支持压缩流的回放。声音大小和声道的控制。

4)输入设备支持:鼠标和键盘。

5)资源:读取硬盘上的资源,支持 ZIP 打包的文件格式。

6)日志支持。

Helper Classes 层:

1)精灵(Sprites)和动画(Animations)

对于所有硬件设备特性的直接支持:锚点(anchor)支持,伸展、缩放、旋转的支持,不同的回放模式的支持。

2)字体

读取和渲染(render)位图字体,多种字体排列方式,旋转和缩放字体,字符串宽度计算等。

3)粒子系统(particle systems)和网格变形(distortion mesh)

高效的粒子系统,可用于创建烟雾、爆炸、魔法效果等,提供粒子系统的管理,支持定界盒(bounding box)计算和冲突检测(collision detection)。

4)资源管理

通过简单的函数调用,来创建复杂的对象,自动的内存管理。对于资源组(resource groups)采用预先缓存和特殊的清除处理(这是一种通过控制对象分配和释放来提高效率的方法)。

5)GUI

强大而灵活的 GUI 管理,支持动画式的 GUI。

6)矢量(Vectors)

对于 2D 矢量的完全支持。

Authoring Tools 层

1)资源的打包(pack):HGE 使用 ZIP 格式的资源包,你可以使用任何的打包工具,甚至还可以给资源包加密。

2)纹理(Texture)工具。

3)粒子系统编辑器:能够设定粒子的速度,方向,生命周期,轨迹,颜色,透明等。

4)位图字体编辑器:运行通过系统中已经安装的字体来创建位图字体,你可以使用图形编辑器来为位图字体添加额外的效果。

2.4 DirectX的特色

DirectX是一种应用程序界面(api),可让以Windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。

以前我们玩Dos游戏的时候,都必须设置声卡的品牌,然后再设置它的irq、i/o、dma,其中有一项设置不对游戏就发不出声。这部分设置不但让玩家伤透脑筋,对游戏设计者开说也非常头痛!因为游戏设计者做游戏之初便需要把市面上所有声卡硬件数据都收集过来,然后根据不同的API来写不同的驱动程序。

现在我们玩Windows游戏,并不会做这些设置,因为Directx提供了一个共同的应用程序界面,只要这个游戏是依照Directx来开发的,不管你是什么显卡、声卡、统统都能玩,而且还能发挥比Dos下更佳的效果。当然,前提是你的显卡、声卡的驱动程序也必须支持Directx才行。

Directx由许多api组成,我介绍几个重要的部分:

1.DirectDraw:这是Directx中非常重要的部分。它担任图形处理的关键。以往在实地址的Dos下设计游戏时,为了游戏速度的考虑,都让程序直接操作硬件。而在Windows98这种保护模式下,所有图形的访问动作都必须gdi这个图形处理中心来处理,而不能直接对硬件下命令,而gdi对连续的画面处理不佳,游戏一旦通过gdi来处理的话,那么效果很差。

DirectDraw就是来帮助windows程序也能直接进行硬件操作,更进一步还能加速显卡的速度,使游戏更为流畅。另外DirectDraw还支持mmx、3dnow、agp等技术,还能处理多屏幕显示,让窗口环境的游戏更加多姿多采。

DirectDraw提供以下功能:

1)DirectDraw的硬件抽象层(HAL)提供的兼容接口可以直接操作显示硬件,从而获得最大性能。

2)DirectDraw可以评估视频硬件的性能,从而可以充分利用已有的功能。例如如果显卡支持硬件位图影射,那么DirectDraw就直接使用硬件影射,从而大大提高了性能。此外,DirectDraw提供了一种硬件模拟层(HEL)模拟硬件不支持的功能。

3)DirectDraw从操作系统所提供的32位内存寻址和平面内存模型中获益。DirectDraw将视频和系统存储器视为整块的空间,而不是碎片的集合。

4)对于全屏模式的应用程序,DirectDraw使得多后台缓存(Back buffers)的换页(Page flipping )操作变得极为容易。

5)支持窗口和全屏模式应用程序的裁剪。

6)支持3D Z-buffer。

7)支持带Z轴方向的硬件辅助覆盖。

8)可访问图象缩放(Stretching)硬件。

9)可同时访问标准的和增强的显示设备内存区。

10)其他的特性,包括动态改变调色板,独占访问硬件和分辨率切换等。

2.DirectSound这是用来处理声音的api,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。前面所举的声卡兼容的例子,就是利用了DirectSound 来解决的。

3.DirectInput这用来处理游戏的一些外围装置,例如游戏摇杆、gamepad、方向盘、vr手套、力反馈的各种设备等。以往要在Dos下用方向盘来玩赛车游戏,就要先调整好irq、dma等各种设置。而现在DirectInput则使这些设备与游戏配合良好,不需要做特别配置。

4.DirectPlay这是为了满足近来流行的网络游戏而开发的api,支持多通信协议,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。

1)创建和管理会话。

2)DirectPlay网络通信

DirectPlay的主要功能是使游戏和网络底层分开。如果在游戏中需要发送状态更新的消息,则可以很简单的调用DirectPlay API,而不必在意复杂的网络连接情况。

DirectPlay网络服务提供了多种网络连接支持,如TCP/IP、IPX、Modem和Serial Link。

3)DirectPlay传输协议

DirectPlay的核心内容是DirectPlay协议。DirectPlay协议的重点是让程序员可以简单的发送消息。协议为多人网络游戏提供了很多量身定制的特性,包括以下几个方面:可靠和不可靠的消息传递;连续和非连续消息传递;消息分割和打包;阻塞控制;发送顺序;消息超时处理。

4)DirectPlay地址

为了传送消息,每个加入游戏的机器都要有一个唯一的地址。运行游戏客户端的电脑提供设备地址,而游戏主机将提供主机的地址。

DirectPlay的地址是一个URL字符串,由如下格式构成:

x-directplay:/[data string]

在不同的网络连接上,它包含发送消息方和接受方这样的元素。

5)DirectPlay对象之间的通信

DirectPlay是基于COM的,而各个组件管理不同的方面,例如,DirectPlay点(peer)对象(CLSID_DirectPlay8Peer)就是负责管理点对点游戏的。

DirectPlay对象之间的通信就是通过组件的接口来完成的。比如,在点对点的游戏中,当发送数据给另外的用户时,就可以使用“IDirectPlay8Peer::SenfTo”,DirectPlay 会发送消息到目标机器。

DirectPlay通过很多回调函数进行联系。在原理上,这些函数和Windows程序使用的回调函数一样。游戏要执行这些回调函数,只需要在DirectPlay初始化期间传送回调函数指针即可。当DirectPlay需要通信时,它就自动的调用回调函数,并且传回两个重要参数信息:鉴定消息类别ID和一个数据块指针,一般是一个结构体。

DirectPlay支持大厅

大厅(Lobby)主要的任务是安排角色和布置游戏。大厅服务器一般还有其他功能。比如主持聊天室,发送新闻和信息,主持商业买卖等。

一个具有大厅的多人游戏,通常由3个部分组成:大厅服务器;大厅客户端;支持大厅的游戏。

DirectPlay没有具体的规定大厅服务器如何工作,所以可以自行安排。DirectPlay

提供了对大厅客户端的支持。一个大厅客户端通过与大厅服务器连接程序进行工作,连接程序被安装到用户的系统上。它就像一个链,连接了用户和大厅。

5.Direct3D(D3D):对现在的游戏来说d3d实在是太重要了!由于3d游戏的兴起,各大厂商纷纷推出3d加速卡为了避免重蹈声卡的覆辙,微软从Directx3.0后加入d3d 这个api,让3d游戏有一个共同的开发标准。这样当游戏再执行时若需要绘图时就会通过d3d向显卡驱动程序提出要求从而完成绘图。

第三章系统设计

系统设计的目的是确定系统如何完成预定的任务,也就是确定系统的物理配置方

案,并且进而确定组成系统的每个程序的结构。首先需要从数据流图出发,设想完成系统功能的若干种合理的物理方案,分析员应该仔细比较这些方案,并且和用户共同选定一个最佳方案,然后,进行软件结构设计,确定软件由哪些模块组成以及这些模块之间的动态调用关系。进行软件结构设计时应该遵循的最主要的原理是模块独立原理,也就是说:软件应该由一组完成相对独立的子功能模块组成,这些模块之间的接口关系应尽量简单。

自顶向下逐步求精是进行软件结构设计的常用途经,但是,如果已经有了详细的数据流图,也可以使用面向数据流的设计方法,用形式化的方法由数据流图映射出软件结构。

在进行详细的过程设计和编写程序之前,首先进行结构设计,其好处在于可以在软件开发的早期站在全局高度对软件结构进行优化,在这个时期进行优化付出的代价不高,却可以使软件质量得到重大改进。

3.1坦克大战主要游戏规则

当敌人坦克完全死亡时,进入下一关时,许多变量需要重新被初始化,如地图的绘制、敌人出现位置的重置、敌人的数量、玩家坦克的当前位置。

如果玩家已经死亡,游戏结束。当按方向键时,玩家坦克就将向不同的方向运行;当开炮时,坦克会做出相应的行动。

当开炮时,调用子弹需要联系自身坦克、地图。这些都由坦克传递给子弹。因为子弹是属于坦克的,它的属性需要跟当前的坦克保持一致。接着使子弹显示出来。最终开始子弹自己的线程。子弹一旦开始运行,就脱离了当前坦克的控制,直到其生命周期终止。

无论子弹是属于敌人还是玩家的,它都必须记录自己的来源和攻击的对象。在玩家坦克发射的子弹中,就必须将攻击对象设置为所有的敌人。这样,它才能有扫描的目标。

电脑调用了随机数函数。因为敌人的运行是自动的,需要有设定的程序让它可自己控制,而不像玩家坦克完全通过每次输入的键盘信号来做出反映。

子弹如果没有击中物体,就继续检测是否击中了某辆坦克。这根据子弹的来源分为两种情况。当来自玩家时,将首先检测所有的敌人发出的子弹,当发生子弹间的碰撞时,

用户的子弹将被移除,虽然按照道理敌人的子弹同时也应被移除,但敌人子弹是运行在另一线程中的,应当由它自己来控制为好,用户的子弹只需要管理好自己的状态就可以了。如果没有和子弹发生碰撞,就检测是否与敌人碰撞,发生碰撞时,敌人数量减少一位,敌人屏幕上数量减少一位。

如果是来自敌人的子弹,将同样检测与玩家子弹的碰撞,及与玩家坦克的碰撞如有碰撞,玩家生命数减少一位,位置重置。如果玩家生命已死亡殆尽,就需要在进行以上操作的同时将玩家坦克的位置放置到屏幕外的部分。

3.2系统概要设计

根据程序要显示内容的不同把程序分为如下几个模式:

初始化模式:显示开始游戏和退出游戏。通过键盘上下方向键可以选择。选中后点回车键可进入相应的模式。

游戏模式:从初始化模式选中开始游戏按回车键,可进入游戏模式,开始游戏。按Esc键返回初始化模式。

过关模式:当玩家经过一次次的战斗后,过关时,进入过关模式。显示玩家的得分信息。点回车键可以进入下一关,继续游戏。点Esc键返回初始化模式。

游戏结束模式:在游戏过程中,如果玩家中弹过多或领主被攻破,生命力会下降到零。这时游戏结束,进入游戏结束模式。显示游戏结束。点Esc键返回初始化模式。

相关主题
文本预览
相关文档 最新文档