增加了绿色的buff
JFrame的界面仍然闪烁所以改为Frame增加了双缓冲技术是界面不闪烁,但是应该太烧空间了
修改了生存和死亡的条件即对应发生的函数体
对代码的封装,对Buff 随机出现的增强
/**
* 绿色的buff
* 保护飞机不受伤五秒
* @author 小帆敲代码
*
*/
public class GreenBuff extends GameObject{
int buffstarttime=-1;//判断buff是否被吃过 并记录时间
public GreenBuff() {
width=Constant.GREEN_BUFF_WIDTH;
height=Constant.GREEN_BUFF_HEIGHT;
x=Math.random()*Constant.FRAME_WIDTH;
y=30;
speed=6;
}
//显示
public void draw(Graphics g) {
if(y<Constant.FRAME_HEITH)
{
if(buffstarttime==-1)//没有被吃过并且没有被吃
{
Color c=g.getColor();
g.setColor(Color.GREEN);
y+=speed;
g.fillOval((int)x, (int)y, width, height);
g.setColor(c);
}
}
else {
buffstarttime=-1;//超出屏幕外
}
}
}
双缓冲技术
Image ImageBuffer = null;
Graphics GraImage = null;
//覆盖update方法
public void update(Graphics g){
ImageBuffer = createImage(this.getWidth(), this.getHeight()); //创建图形缓冲区
GraImage = ImageBuffer.getGraphics(); //获取图形缓冲区的图形上下文
paint(GraImage); //调用paint方法
GraImage.dispose(); //释放图形上下文资源
g.drawImage(ImageBuffer, 0, 0, this); //将图形缓冲区绘制到屏幕上
}