


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动扶梯梯级防夹手的检测与预防措施考核试卷
- 玻璃太阳能电池制备考核试卷
- 环保项目实施对经济的影响分析考核试卷
- 矿产制品批发考核试卷
- 漆器制作与质量管理体系的构建考核试卷
- 电动汽车充电设施对电网的影响考核试卷
- 热电联产在微网系统中的整合考核试卷
- 网络直播平台旅游主播目的地推广合作合同
- 网络内容监控技术算法授权租赁协议
- 游戏内道具特效定制化开发与技术支持协议
- 小学数学培训微讲座
- 《电子产品简介》课件
- 赛迪顾问一线调研第36期:中国人工智能医疗器械:前路漫漫仍需披荆斩棘
- 2024秋期国家开放大学《可编程控制器应用实训》一平台在线形考(形成任务5)试题及答案
- 广东省广州三校2023-2024学年高二下学期期末考试+政治试卷(含答案)
- 健康照护师技能大赛刷题(四)附有答案
- 聚乳酸纤维的可持续生产和应用
- 9+2×0.75m装配式钢筋混凝土简支T型梁桥设计计算论文
- 网课智慧树知道《计算机科学导论(聊城大学)》章节测试答案
- 无人机打药协议书
- 耳穴贴压技术操作评分标准
评论
0/150
提交评论