📄 aerolite.java
字号:
package obj;import javax.microedition.lcdui.*;import main.*;import java.util.Random;//陨石类//继承自子弹类public class Aerolite extends Bullet{public int aeroliteId;public int n=Cntrl.load.n; //第几个图片是流星。private int idnum;//图片的总数,用来产生随机数。private int tw=0;//用来做碰撞检测的。private int th=0;private int time=0;private int ss=Cntrl.load.aeroliteScore;//打破陨石得分。 public Aerolite(int xp,int yp,int sw,int sh) { super( xp, yp, 0, 0, sw, sh); idnum=Cntrl.load.aeroliteImg.length; aeroliteId=new Random().nextInt(idnum); img=Cntrl.load.aeroliteImg[aeroliteId]; } public boolean getAlive(){ return alive&&xPos>0&&xPos<screenW+(xPos)&&yPos>0&&yPos<screenH; } public void DrawSelf(Graphics g){ g.drawImage(img,xPos-imgW/2,yPos-imgH/2,Graphics.LEFT|Graphics.TOP); } public void Move(Bullets mybs){ ySpeed=aeroliteId+1; xPos+=xSpeed; yPos+=ySpeed; if(aeroliteId<n){ hit(mybs);}//子弹和陨石的碰撞检测。 }//////////////////////////////////// public void hit(Bullets mybs){//子弹和陨石的碰撞检测。 for(int i=0;i<mybs.bs.size();i++){ Bullet b=(Bullet)mybs.bs.elementAt(i);//取出每个子弹。 tw=xPos>b.getXPos()?b.imgW:this.imgW; th=yPos>b.getYPos()?b.imgH:this.imgH; if(tw>Math.abs(xPos-b.getXPos()) //检测是否相碰。 && th>Math.abs(yPos-b.getYPos()) ) { if(time>aeroliteId+1) { Cntrl.gameBoard.myPlan.score+=ss;//加5分。 Cntrl.gameBoard.explodes.Add(new Explode(xPos,yPos));//加入爆炸效果 this.alive=false;} //子弹打中5次才消失。 else {time++;} Cntrl.gameBoard.bexplode.Add(new BulletExplode(xPos+imgW/2,yPos+imgH/2)); //加入子弹的爆炸效果.传的是图片中心的坐标 mybs.bs.removeElement(b); //子弹碰后就删除。 } } }////////////////////////}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -