一、飞机游戏主窗口制作
JFrame窗口
二、图形文本绘制
paint
三、让飞机移动
class PaintThread extends Thread {
@Override
public void run() {
while(true) {
//System.out.println("窗口画一次");
repaint(); //重画
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
四、封装画每个游戏对象的GameObject类,方便后面画飞机或其他物体继承调用类似属性/方法
五、定义键盘监听的内部类
//定义键盘监听的内部类
class KeyMonitor extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode());
}
}
六、实现按下上下左右按键,改变x,y的值
七、定义炮弹类Shell,完成初始化,并且画出炮弹
八、双缓冲技术,避免屏幕闪烁
//添加双缓冲,避免屏幕闪屏
private Image offScreeImage = null;
public void update(Graphics g) {
if(offScreeImage == null) {
offScreeImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
}
Graphics gOff = offScreeImage.getGraphics();
paint(gOff);
g.drawImage(offScreeImage, 0, 0, null);
}
九、通过矩形规则,使用Jave自带的api函数,intersects()检测两矩形是否相交
//飞机和炮弹的碰撞检测
boolean peng = shells[i].getRect().intersects(plane.getRect());
if(peng) {
plane.live=false;
}
十、设计爆炸类,实现爆炸效果图片的轮播
十一、计时功能
period = (int)((endTime.getTime() - startTime.getTime())/1000);