飞机类游戏中子弹是必不可少的,他们数量很多且充斥着整....doc

飞机类游戏中子弹是必不可少的,他们数量很多且充斥着整....doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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;

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档