- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
飞机类游戏中子弹是必不可少的,他们数量很多且充斥着整...
飞机类游戏中子弹是必不可少的,他们数量很多且充斥着整个屏幕,这些随机或者有着一定AI的小物体,实现起来不是总那么容易,有时候你不得不考虑很多和效能有关的问题。我们之前定义了GameObject,很大程度上就是为了方便的重用Sprite,因为我们有很多的子弹,不可能没增加一个子弹都是一个Sprite,我需要共享同一个Sprite。我们通过继承GameObject来实现。 下面分析一下这个子弹类: 它将继承自GameObject; 记录子弹的个数; 一个子弹的状态数组,记录各个子弹的类型type,位置x,y,速度vx,vy,是否存活alive等等。 初始化子弹 一个绘制方法,将子弹画到屏幕上。 一个碰撞检测方法。 好了先这样吧,以下是我们子弹类的定义,注意这种思想——重用Sprite,这很重要。(这里参考了tony的很多设计) public class Bullets extends GameObject { private int[][] bullets;//子弹状态数组 private int bulletstotal;//数组的length private Random rnd;//随机数 public static final int BULLET_TYPE_LEFT=0;//子弹初始化的位置类型 public static final int BULLET_TYPE_RIGHT=1;//分为上下左右四种 public static final int BULLET_TYPE_TOP=2; public static final int BULLET_TYPE_BOTTOM=3; private int width,height;//屏幕的高和宽,用于随机子弹位置 public Bullets(Image img,int picwidth,int picheight,int bulletstotal,int width,int height) { super(img,picwidth,picheight); this.bulletstotal=bulletstotal; bullets=new int[bulletstotal][6]; rnd=new Random(); this.width=width; this.height=height; } public void initBullets(){//初始化子弹状态数组 for (int i = 0; i bullets.length; i++) { initBullet(i); } } private void initBullet(int i) {//初始化index号子弹 bullets[i][0] = (rnd.nextInt() 0x7fffffff) % 4; //type bullets[i][5] = 1; //alive 1表示存活, 0表示死去 switch (bullets[i][0]) { case BULLET_TYPE_LEFT: bullets[i][1] = -5; bullets[i][2] = (rnd.nextInt() 0x7fffffff) % height; bullets[i][3] = (rnd.nextInt() 0x7fffffff) % 3 + 1; //vx bullets[i][4] = (rnd.nextInt()) % 3; //vy break; case BULLET_TYPE_RIGHT: bullets[i][1] = width + 5; bullets[i][2] = (rnd.nextInt() 0x7fffffff) % height; bullets[i][3] = ( (rnd.nextInt() 0x7fffffff) % 3 + 1) * -1; //vx bullets[i][4] = (rnd.nextInt()) % 3; //vy break; case BULLET_TYPE_TOP: bullets[i][1] = (rnd.nextInt() 0x7fffffff) % width; bullets[i][2] = -5; bullets[i][3] = (rnd.nextInt()) % 3; //vx bullets[i][4] = (rnd.nextInt() 0x7fffffff) % 3 + 1; //vy break;
您可能关注的文档
- A10Networks产品及公司简介.doc
- 8AUnit1- Unit2课时知识点细目表新.doc
- DCMTK安装说明.docx
- 酒店客房培训--001正确称呼客人Addressing a Guest.doc
- 市场经济学试卷及答案(五).doc
- 广州新版六年级下册英语单词默写.docx
- 新职业英语素质篇1-4单元.docx
- 北京市海淀区高三完型阅读生词.docx
- maven和antx的使用相关.docx
- c++ builder MSCOMM控件.doc
- 《GB/T 12668.7202-2024调速电气传动系统 第7-202部分:电气传动系统的通用接口和使用规范 2型规范说明》.pdf
- 《GB/T 15692-2024制药机械 术语》.pdf
- GB/T 15692-2024制药机械 术语.pdf
- 中国国家标准 GB/T 15692-2024制药机械 术语.pdf
- GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 中国国家标准 GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 《GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求》.pdf
- 《GB/T 30117.1-2024非相干光产品的光生物安全 第1部分:通用要求》.pdf
- 《GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验》.pdf
- GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验.pdf
文档评论(0)