飞机大战小游戏2.0

增加了绿色的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);   //将图形缓冲区绘制到屏幕上 
 } 

原文地址:https://www.cnblogs.com/code-fun/p/11197195.html