package planegame;
import javax.microedition.lcdui.*;
import java.util.Vector;
import java.util.*;
/**************************************************
类功能介绍:控制子弹,将所有子弹的状态放入记录集当需要刷新
或更新时再取出
**************************************************/
public class bullet
{
private Vector rs=new Vector(); //存放所有子弹的记录集
private int width,height; //屏幕的宽度高度
private Graphics g; //画布
private Timer timer=new Timer();
private cortrol ctrl=null;
public bullet(cortrol ctrl,int width,int height)
{
this.ctrl=ctrl;
this.g=ctrl.bg;
this.width=width;
this.height=height;
timer.schedule(new createBullet(),300,300);
timer.schedule(new setBullet(),5,5);
}
public void refreshBullet(int x)
{
int row[]=null;
g.setColor(0xffffff);
for (int i=0;i<rs.size() ;i++ )
{
row=(int [])rs.elementAt(i);
g.drawLine(row[0],row[1],row[0],row[1]-10);
}
}
/**************************************************
*功能介绍:新增一颗子弹
*输入参数:无
*返回参数:无
**************************************************/
public void addNew()
{
int x=plane.getX(); //取得飞机当前的x轴,发射子弹时用些位置
int row[]={x,height -50}; //取得子弹发射时的高度
rs.addElement(row); //存信记录集中
}
/**************************************************
*功能介绍:删除一颗生命令周期已结束的子弹
*输入参数:记录集的索引号
*返回参数:无
**************************************************/
public void delete(int index)
{
rs.removeElementAt(index);
}
/**************************************************
类功能介绍:订时生出子弹
**************************************************/
class createBullet extends TimerTask
{
public void run()
{
addNew();
}
};
/**************************************************
类功能介绍:设置子弹状态
**************************************************/
class setBullet extends TimerTask
{
private int row[]=null;
public void run()
{
for (int i=0;i<rs.size() ;i++ )
{
row=(int [])rs.elementAt(i);
row[1]=row[1]-3;
if (row[1] <= 0) //如果子弹已超出屏幕视线则将它删除
{
delete(i); //删除子弹
}
else
{
rs.setElementAt(row,i); //把子弹往上移
}
ctrl.showCanvas(g);
}
}
};
};
评论0