目前学习的示例代码是做一个飞机大战。参照其实现方法希望可以实现一个泡泡龙的游戏。
当前进度实现了
1.飞机的键盘监听(即用键盘控制我放飞机的移动)
2.子弹的自动发射
3.背景移动
4.定时器线程生成敌方飞机,自动落下)
待实现功能:
1.随机生成宝箱对子弹进行强化
2.子弹和飞机的碰撞,
3.我机和奖励宝箱的碰撞
4.子弹对象会因为宝箱产生攻击力和载入图片效果的变化
5.给定我方飞机,地方飞机的生命值
会在这里持续更新代码和遇到的问题,以及如何解决的思路。
当前实现效果图
代码如下
/**
* 飞机类,用于发射子弹的小球
*/
public class Aircraft extends MoveBall {
//游戏界面的大小
//初始化飞机的位置
public Aircraft(){
setX(370);
setY(700);
setSize(60);
}
}
/**
* 子弹类
*/
public class Bullet extends MoveBall {
//重载构造方法
public Bullet(int x,int y){
setX(x - 13);
setY(y);
setSize(25);
setVy(-5);
}
//子弹的碰撞效果
}
//敌机类
public class Enemy extends MoveBall {
public Enemy(int x,int y){
setX(x - 13);
setY(y);
setVy(5);
}
}
import javax.swing.*;
import java.awt.*;
/**
界面
本次板本希望解决如下问题
1、闪烁问题
1)问题原因
当我们利用普通画笔的时候是实时进行画图,
当我们利用一个画笔同时在画飞机子弹类和背景类的时候,
就会出现延迟,即当我在用画笔画背景的时候,
此时没有画笔在画飞机,这个时候飞机就会消失,
因为时间间隔很短,所以也就是所谓的闪屏,会出现图片的闪动。
2)问题解决
而利用缓存画笔则巧妙的解决了这个问题,
这个相当于一次性让画笔画完一整张图,
然后再一次性呈现出来,这样就解决了闪屏。
2.碰撞问题
*/
public class GameBallUI {
public void showGameBall(){
JFrame jf = new JFrame();
jf.setTitle("飞机大战v2.0");
jf.setSize(800, 800);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//不能直接调用jf.setBackground()因为JFrame中用许多面板,这样才有效
jf.getContentPane().setBackground(Color.white);
jf.setLayout(new FlowLayout());
// JButton add = new JButton("add");
// jf.add(add);
// JButton start = new JButton("start");
// jf.add(start);
jf.setVisible(true);
//给窗体添加键盘监听器方法
GameListener gl = new GameListener(jf);
jf.addKeyListener(gl);//给窗体添加键盘监听器方法
jf.requestFocus();//让窗体获取焦点,没有焦点java无法获取键盘
}
public static