飞机大战小游戏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);   //将图形缓冲区绘制到屏幕上 
 } 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值