SDL的飞机大战游戏的制作介绍.doc_第1页
SDL的飞机大战游戏的制作介绍.doc_第2页
SDL的飞机大战游戏的制作介绍.doc_第3页
SDL的飞机大战游戏的制作介绍.doc_第4页
SDL的飞机大战游戏的制作介绍.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm 基于SDL的飞机大战游戏制作介绍2014/6/7GDUT 陈彩华l 游戏玩法基本的介绍l 游戏的设计的基本框架l 游戏的设计中关键难点的解决l 关于学习程序设计的心得程序下载的网站:/s/1hq9nYj6一. 游戏玩法基本的介绍打开plane_war.exe 文件,就可以开始游戏,WSAD控制上下左右,目前仅有“1”这一个全屏秒的道具可以使用。游戏过程中会随机掉落道具,所有的敌机中有一种可以追踪我方飞机的自杀式飞机,比较危险。当坚持120秒,就有BOSS出现,嘿嘿,BOSS的子弹是凶残了点,但是仔细观察BOSS的运动轨迹和喷弹的规律,就会发现很简单的办法打掉它。当顺利杀死BOSS,会进入第二关,鉴于时间有限,第二关及第二关以后的敌机和BOSS都和第一关一样。打落的敌机越多,那么分数就越高。二. 游戏的设计的基本框架游戏就是在上面的有GameControl类控制下的大循环里不断循环,直到用户选择退出或者把程序运行的窗口关闭。三. 游戏的设计中关键难点的解决 类的管理游戏设计的过程中涉及相当一部分类比如子弹类,我方飞机类,敌机类,还有一些背景类,道具类,由于对象的数目是不同的,比如我方飞机只需一架就够了,但是敌机,子弹,却是需要一大片,这个时候,如何有效地管理它们,使游戏运行的效率更高,类的管理成了关键。下面是这个游戏类的管理的表格介绍。在一个良好的管理模式下,可以让程序的结构更加清晰,在后期的升级上,也更加容易。 众多对象的调用飞机大战游戏在运行的过程中,是需要一大片的敌机,一大片的子弹在程序中跑的。在这个良好的管理模式之下,就能很轻松地把一大片敌机,子弹玩弄于计算机的股掌之中。当一次新定义一批敌机(Ship类型)的变量,是怎么方便地实现这同时一大波敌机的碰撞检测,运动,甚至发射子弹的动作,还有发射的子弹的碰撞检测?没错,就是使用数组。这里用的是指针数组,下面通过介绍敌机生成机制这个例子介绍如何实现众多对象的调用。主要思路就是,在程序运行的循环里,当用户还没有选择退出, 在GameControl(总经理)里面,设置一个定时器,这个定时器时间一到,就让总经理放一大波敌机从天空对面飞过来。事实上,在ShipManage这个类的定义里面,有一个这样的成员,TOTAL_Ships是一个宏定义的常量,它的值是20首先先定义含有20个Ship指针元素的Ships数组,和shipyard这个整型数组,然后把shipyard里面的20个元素全部初始化为1 。在这里,利用shipyard这个数组记录对应的Ships指针是否有没有指向对象:shipyardi= =1,对应的Shipsi是空的;shipyardi= =0 ,对应的Shipsi是有指向对象的。每次用*Ships这个指针数组新定义一艘敌机,就遍历这个shipyard数组 :for(int i=0;iMotion, Shipsi-Show, 完成对应的移动,显示等操作。同样地,有了这个管理的机制体系后,想管理一批子弹的运动,碰撞,其实就是在BulletManage里面定义一个Bullet *Bullets数组和一个整型int magazine(弹匣)然后利用magazine的标记新定义Bulletsi,管理回收它们。其实,还有道具的管理使用也是类似的。 BOSS的编写BOSS的编写的难点在于,它一次性是发射一大片子弹的,而且它是需要有一定的运动轨迹的,在被打死之前,BOSS不可以跑掉。具体实现是这样的,发射一大片子弹,是先用一个数组保存那些没有指向的对象的Bullets指针的下标,有了这些编号,就可以创建子弹对象,子弹的初始坐标有用随机数让它们随机在一定的范围内,子弹的初始速度也是用随机数随机化的,这样子弹们就漫天飞舞了。至于BOSS的运动,让BOSS在一个范围内运动,就是当BOSS的坐标一旦超出这个范围,比如x坐标过大,就让xVel=-xVel; 道具的编写道具是运用定时器和随机数出现的,比如Wave这个道具,当用户吃了这个道具,按下“1”使用它的时候,就启动一个计时器,同时显示那些波浪运动的效果,计时器达到0.8秒的时候,遍历整个ShipManage里面的Ships数组,把有指向对象的shipi的HP都减少10;下图那个青色的东西就是Wave这个全屏秒杀的道具。四. 关于学习程序设计的心得程序设计可以说是我们自动化学生的基本本领,想学好它,除了投入时间,精力,个人觉得很重要的一点要多找一下走得比较快的同学交流。面向程序设计的过程中,其中有些设计原则很关键。下面是一段关于设计原则的介绍:向对象的5条基本设计原则 作者:黄业宇这几天重新看了一遍大话设计模式,发现果然有不同的感悟,而且自己也上网找了敏捷软件开发原则、模式与实践一书来看,那本书的序言中有一段话我觉得很有道理:“美的东西比丑的东西创建起来更廉价,也更快捷。”设计一个软件不关要追求代码的优雅问题,更关乎生产成本等。技术大师们在对软件架构的研究中经历了很长时间的摸索,从面向过程到面向对象,从设计原则到设计模式,总结了许多设计上的经典法则,而我们就只是站在巨人的肩膀上眺望远方而已。从大话设计模式中,大家一定会发现其中的经典的23个模式背后,其实都遵循着一些基本的原则的。而设计原则又由设计模式来实现,这就是二者相辅相成的关系,所以了解原则对于了解模式具有绝对的指导意义。以下是我在阅读过程中的一些学习笔记,自以为有一定道理。最基本的设计原则有5条,分别是:单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则和Liskov替换原则。单一职责原则对于单一职责原则,其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度。通常意义下的单一职责,就是指只有一种单一功能,不要为类实现过多的功能点,以保证实体只有一个引起它变化的原因。专注,是一个人优良的品质;同样的,单一也是一个类的优良设计。交杂不清的职责将使得代码看起来特别别扭牵一发而动全身,有失美感和必然导致丑陋的系统错误风险。开放封闭原则对于开放封闭原则,它是面向对象所有原则的核心,软件设计说到底追求的目标就是封装变化、降低耦合,而开放封闭原则就是这一目标的最直接体现。开放封闭原则,其核心思想是:软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。因此,开放封闭原则主要体现在两个方面:1、对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。2、对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对其进行任何尝试的修改。实现开开放封闭原则的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以修改就是封闭的;而通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,所以就是开放的。“需求总是变化”没有不变的软件,所以就需要用封闭开放原则来封闭变化满足需求,同时还能保持软件内部的封装体系稳定,不被需求的变化影响。依赖倒置原则对于依赖倒置原则,其核心思想是:依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。我们知道,依赖一定会存在于类与类、模块与模块之间。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口,而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。抽象的稳定性决定了系统的稳定性,因为抽象是不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心。依赖于抽象是一个通用的原则,而某些时候依赖于细节则是在所难免的,必须权衡在抽象和具体之间的取舍,方法不是一层不变的。依赖于抽象,就是对接口编程,不要对实现编程。接口隔离原则对于接口隔离原则,其核心思想是:使用多个小的专门的接口,而不要使用一个大的总接口。具体而言,接口隔离原则体现在:接口应该是内聚的,应该避免“胖”接口。一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染。接口有效地将细节和抽象隔离,体现了对抽象编程的一切好处,接口隔离强调接口的单一性。而胖接口存在明显的弊端,会导致实现的类型必须完全实现接口的所有方法、属性等;而某些时候,实现类型并非需要所有的接口定义,在设计上这是“浪费”,而且在实施上这会带来潜在的问题,对胖接口的修改将导致一连串的客户端程序需要修改,有时候这是一种灾难。在这种情况下,将胖接口分解为多个特点的定制化方法,使得客户端仅仅依赖于它们的实际调用的方法,从而解除了客户端不会依赖于它们不用的方法。分离的手段主要有以下两种:1、委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是会增加系统的开销。2、多重继承分离,通过接口多继承来实现客户的需求,这种方式是较好的。Liskov替换原则对于Liskov替换原则,其核心思想是:子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论