如果要显示爆炸对象,我们仍然需要在主窗口中定义爆炸对象,并且在飞机和炮弹碰撞时,在飞机坐标处创建爆炸对象,显示爆炸效果。
MyGameFrame:增加爆炸效果
public class MyGameFrame extends Frame {
Image bgImg = GameUtil.getImage("images/bg.jpg");
Image planeImg = GameUtil.getImage("images/plane.png");
Plane plane = new Plane(planeImg,300,300,3);
ArrayList<Shell> shellList = new ArrayList<Shell>();
Explode bao;//创建爆炸对象
//paint方法作用是:画出整个窗口及内部内容。被系统自动调用。
@Override
public void paint(Graphics g) {
g.drawImage(bgImg, 0, 0, null);
plane.drawMySelf(g); //画出飞机本身
//画出容器中所有的子弹
for(int i=0;i<shellList.size();i++){
Shell b = shellList.get(i);
b.draw(g);
//飞机和所有炮弹对象进行矩形检测
boolean peng = b.getRect().intersects(plane.getRect());
if(peng){
plane.live = false; //飞机死掉,画面不显示
if(bao==null){
bao = new Explode(plane.x,plane.y);
}
bao.draw(g);
}
}
}
//其余代码和上一个版本一致,限于篇幅,不再展示
}
程序执行结果,当飞机和炮弹碰撞时发生爆炸,如图所示: