📄 enemys.java
字号:
package obj;
import main.*;
import java.util.*;
import javax.microedition.lcdui.*;
//敌机类 下面还有敌机的子弹
//继承自子弹类
public class Enemys extends Bullets{
public boolean showBoss=false;
public Vector es;
public Vector ebs;
private int max;//敌机的最大数
int re;//产生随机数
int aw;
int ah;
int j=0;// 加敌机的计数器
int k=0;// 出现BOSS的计数器
int natality=0;//产生敌机的间隔
// int myPlan_x=0;//玩家飞机的坐标
// int myPlan_y=0;//玩家飞机的坐标
public Enemys(int w,int h) {
aw=w;
ah=h;
max=Cntrl.load.enemyMax;
es=new Vector();
ebs=new Vector();
}
private void Add(Enemy ene){
if(es.size()>max)return;
{es.addElement(ene);}
}
private void AddBullets(EnemyBullets eb){
if(ebs.size()>max)return;
{ ebs.addElement(eb); }
}
// public int bulletsNum(){return es.size();}
public void Move(Bullets mybs){
for(int i=0;i<es.size();i++){//移动敌机.
Enemy ene=(Enemy)es.elementAt(i);
ene.Move(mybs);}
for(int i=0;i<ebs.size();i++)//移动敌机子弹
{EnemyBullets eb=(EnemyBullets)ebs.elementAt(i);
eb.Move();
}
for(int i=0;i<es.size();i++){//删除敌机.
Enemy ene=(Enemy)es.elementAt(i);
if(!ene.getAlive()){es.removeElement(ene);}}
for(int i=0;i<ebs.size();i++){//删除敌机子弹
EnemyBullets eb=(EnemyBullets)ebs.elementAt(i);
if(!eb.getAlive()){ebs.removeElement(eb);}
}
}
public void DrawSelves(Graphics g,Bullets mybs){
makeEnemy();
Move(mybs);
for(int i=0;i<es.size();i++){
Enemy ene=(Enemy)es.elementAt(i);
ene.DrawSelf(g);
}
for(int i=0;i<ebs.size();i++)
{
EnemyBullets eb=(EnemyBullets)ebs.elementAt(i);
eb.DrawSelf(g);
}
}
private void makeEnemy(){//随机产生敌机
j++;
natality=Cntrl.load.enemyNatality;//产生敌机的间隔
if(j%natality==0){
int ebs_x=0;//敌人子弹的横向速度
int ebs_y=Cntrl.load.pass+1;//敌人子弹的纵向速度是关数加 1 。
ebs_y=ebs_y>10?10:ebs_y;//防止子弹过快。
j=0;
re=new Random().nextInt(aw);
Enemy tempEnemy=new Enemy(re,0,aw,ah);
EnemyBullets tempBullet=new EnemyBullets(re+tempEnemy.imgW/2,//将子弹从前面中间出
tempEnemy.imgH,
0,ebs_y,aw,ah);
Add(tempEnemy);
this.AddBullets(tempBullet);
if(!Cntrl.gameBoard.boss.getAlive()){//出现过 k 个敌机就出现Boss.
k++;
if(0==k%Cntrl.load.bossShow )
{showBoss=true;
Cntrl.gameBoard.boss.setBossalive(true);
Cntrl.gameBoard.boss.bossInit();
k=0;}
}//出现过几个敌机就出现Boss.
}//end if
}//end addAerolite
}
//*************************************************************************************
class EnemyBullets {//敌机子弹
protected int xSpeed=0;
protected int ySpeed=0;
private int xPos=0;
private int yPos=0;
protected boolean alive=true;
protected int screenW=0;//屏幕的宽高
protected int screenH=0;
protected Image img;
protected int imgW;
protected int imgH;
public EnemyBullets(int xp,int yp,int xs,int ys,int sw,int sh) {
xPos=xp;//坐标
yPos=yp;
xSpeed=xs;//速度
ySpeed=ys;
screenW=sw;//
screenH=sh;
img=Cntrl.load.enemybulletImg[0];
imgW=img.getWidth();
imgH=img.getHeight();
}
public void DrawSelf(Graphics g){
g.drawImage(img,xPos-imgW/2,yPos-imgH/2,Graphics.LEFT|Graphics.TOP);
}
public void Move(){
xPos+=2*xSpeed;
yPos+=2*ySpeed;
}
public boolean getAlive(){
return alive&&xPos<screenW+(xPos)&&yPos>0&&yPos<screenH;
}
public int getXPos() {
return xPos;
}
public int getYPos() {
return yPos;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -