之前做了弹球游戏,用了线程,以为自己懂了,但是做飞机大战的时候觉得有点乱,所以回过头来整理一下弹球游戏的做法:
文章目录
一、做出界面并在界面上画出球
1.写一个主类显示界面,这个很简单可以直接跳过
2.给窗体添加鼠标监听,定义一个窗体鼠标监听器类,点击界面出现小球
public class BallListener extends MouseAdapter{
private BallMain ballMain;
private Graphics g;
private int size=30;
public BallListener(BallMain ballMain) {
this.ballMain = ballMain;
}
public void mouseClicked(MouseEvent e) {
if(g == null) {
g = ballMain.getGraphics();//如果没有画笔,给窗体添加画笔
}
int x = e.getX();
int y = e.getY();
g.fillOval(x, y, size, size);
System.out.println("点击");
}
}
观看效果:
二、如何让小球运动起来
想要让小球运动起来其实很简单,只需要改变小球的坐标:
for(int i=x,j=y;i<ballMain.getWidth() && j<ballMain.getHeight();i++,j++) {
g.fillOval(i, j, size, size);
}
但是这样小球会一下子全都画完,我们看到的效果是一条粗线,不是我们想要的效果
上面小球运动得太快了,还没看到,就已经出了边界,我们可以增加休眠sleep(),这样我们发现能够看到小球的运动轨迹,但是画出来还是一条线,而且不能再点击画出另一个球。针对画出的不是单一的球,我们可以进行轨迹的擦除,轨迹擦除可以利用背景颜色在原有的位置在画一个球将轨迹覆盖。
这里我总是晕,但是想清楚之后发现很简单,我们想着先画一个黑球,然后球移动的时候我们要把之前的球的印记擦除使用画背景颜色球的方法,我们在画黑球和画背