关于飞机射击类游戏的设计原理_第1页
关于飞机射击类游戏的设计原理_第2页
关于飞机射击类游戏的设计原理_第3页
全文预览已结束

下载本文档

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

文档简介

1、      众所周知,飞机射击类游戏几乎是我们接触到的第一类计算机游戏,不论是在街机中还是在计算机中,这一类游戏都是非常容易上手和招人喜爱的。就算是在这个即时战略游戏、3D第一视角游戏等盛行的年代,闲暇是玩玩打飞机的游戏也是很惬意的。   在这几天里学完了有关 DirectX 方面的知识后,就上手编了一下飞机射击的游戏。看起来好象很复杂,其实只不过是些数据结构的集合而已,还是比较容易实现的。   关于 DirectDraw 方面的编程,我就不想介绍了,因为任何一个人照本书看几天就可以编出象样的示

2、范程序了,无非是在申请的23个表面上轮换贴图而已,WIN32 的 API 函数似乎已经让我们不需要花什么精力就可以实现非常平滑的动画了。   下面简单介绍一下设计方法,关键是PLAYER的飞机和敌人的飞机的控制,以及它们的子弹的控制。   很显然,用2个对象就可以实现它们的控制了。分别是PLAYER的飞机(可以是2架)、敌人的飞机。   PLAYER的飞机类:    class CPlayer private: CPoint ptPos;    /飞机坐标 stru

3、ct bullet *stBullet; /飞机所发出的所有子弹的链表 struct display PlaneDisplay; /即有关飞机的位图信息指针、飞机有效区域等信息 private: FreshBullet();   /定时刷新子弹链表,除去已经爆炸或消失的子弹 public: int nOil;     /飞机油料 int nSpeed;    /飞机速度 int nDisplayState; /显示方式,如果被击中,就转向爆炸状态,以便   

4、;         /飞机显示函数显示爆炸效果,比如,正常是1,            /消失是0,而爆炸就是-15。这样,显示函数可以            /单纯的按照这个植,在SUFFACE中计算图象位置       

5、60;    /直接显示就可以了,每次+1,这样-15加了15次就            /变成0了,动画也显示了,飞机也消失了,不需要            /其他处理。这样的方法也可以用在子弹的处理上, public: CPoint GetPos();       

6、 /获取飞机的坐标 void SetPos(CPoint);      /社顶设定飞机坐标 void AddBullet(struct bullet*); /给飞机加入子弹,只要每隔设定的 TickTime                  /就加入一次,就可以形成连续的发弹效果 void RunBullet();   

7、0;    /每隔设定的 TickTime,按Bullet的属性更新                  /Bullet的坐标,就可以形成复杂的子弹效果 struct bullet* IsAttack(CPoint); /获取当前坐标是否有子弹,并返回子弹指针            

8、;      /这是为了判断敌机是否被击中所设计的函数                  /敌机只要将自己的坐标放入CPoint中,就可以                  /知道是否被击中,并且用指

9、针设定子弹的状态 子弹的STRUCT struct bullet struct bullet* next; /指向下一个子弹 int nStyle;     /子弹的种类 int nSpeed;     /子弹的速度 int nDirection;   /子弹的方向 int nDisplayState;  /显示方式,如果击中目标,就转向爆炸状态,以便         

10、;    /Runbullet函数显示爆炸效果,同上边的飞机处理方法一样 敌机的类和PLAYER的飞机类差不多,去掉油料等的属性,多加入一个MotionStyle属性,控制飞机的 飞行方式和攻击方式,如直线、斜线、曲线、SIN方式、跟踪方式等。再加入一个Run()方法,利用 MotionStyle在每个TickTime时,决定飞机坐标的变换方法,这样就可以很直观的控制飞机的飞行和攻击。 在判断双方是否被攻击时,只要先用PLAYER对象的IsAttack,将所有敌机对象的坐标放入其中,就可以 获取所有被PLAYER击中的飞机,反过来用所有敌机的对象调用IsAttack,将PLAYER飞机的坐标放入其中, 就可以知道PLAYER是否被击中。 至于是否被击中,可以单纯的用矩形来判断,完美的方法当然是用Rgn(区域)来判断,将飞机的轮廓变 成区域就可以了。 至于背景的设计就更简单了,只要用一个二

温馨提示

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

评论

0/150

提交评论