package cn.plane;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import cn.util.Constant;
import cn.util.GameUtil;
import cn.util.Myframe;
public class PlaneFrame extends Myframe {
Image bg = GameUtil.getImage("pic/bg.jpg");
Plane p =new Plane("pic/plane.png", 50, 50);
ArrayList bulist =new ArrayList();
long startTime,endTime;
Explode explode;//爆炸对象
public void paint(Graphics g){ //画出图像
g.drawImage(bg,0,0,null);//先画背景
p.draw(g);//画飞机
for(int i=0; i<bulist.size(); i++){ //画子弹
Bullet b = (Bullet) bulist.get(i);
b.draw(g);
//检测每一颗子弹矩形与飞机矩形是否相交
boolean f = b.getRect().intersects(p.getRect());
if(f){
p.setLive(false); //飞机死掉,不能动
if(explode ==null){
explode = new Explode(p.x, p.y);
endTime = System.currentTimeMillis();
}
explode.draw(g);
break;
}
}
if( ! p.getLive()){
printInfo(g,"Game Over",30, 80, Constant.Game_High/2,Color.WHITE);
long period = (endTime- startTime)/1000;
printInfo(g,"时间:"+period+"秒",20, 80, Constant.Game_High/2+30,Color.red);
}
}//end paint()
//打印飞机死亡信息
public void printInfo(Graphics g ,String str, int size,int x,int y,Color cor){
Color c = g.getColor();
g.setColor(cor);
Font f = new Font("微软雅黑", Font.BOLD, size);
g.setFont(f);
g.drawString(str, x, y);
g.setColor(c);
}
public static void main(String[] args) {
new PlaneFrame().runGame();
}
@Override
public void runGame() {
super.runGame(); //父类
addKeyListener(new KeyMonitor()); //子类新增键盘监听
for(int i=0; i<15; i++){ //生成一堆子弹
Bullet b = new Bullet();
bulist.add(b);
}
startTime = System.currentTimeMillis();;
}
//定义为内部类,可以直接只有外部类的普通属性
class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
//System.out.println("按下键盘:"+e.getKeyCode());
p.Adddirection(e);
}
@Override
public void keyReleased(KeyEvent e) {
//System.out.println("释放键盘:"+e.getKeyCode());
p.mindirection(e);
}
}//
}