今天为大家分享打砖块游戏的开发与制作,目前系统已经开发完成,界面漂亮,游戏的过程有小球碰撞的声音,有比较真实碰撞的感觉。整个系统界面漂亮,支持源码导入,也支持打包JAR直接运行该游戏。
本项目希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步!!!
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发,不需要安装第三方JAR包。纯窗体模式,直接运行Main文件即可以。选中Main.java,点右键 run as application启动相关程序。也客户把程序打包成JAR包,双击JAR即可以启动相关的程序。
1 游戏场景
打砖块游戏有三种场景:砖块、小球、面板。
砖块:8*3 ,一个24块,弹球击中砖块,砖块消失,并且发出相关的声音
小球:通过键盘的,方向键中的上(up)开始游戏
面板:小球通过面板反弹来反复打击砖块。如果小球没有集中砖块,游戏直接结束
2 游戏规则
小球通过面板反弹来反复打击砖块。如果小球没有集中砖块,游戏直接结束。小球发射后,通过移动面板来使得小球多次击中砖块来完成砖块的消失。消失的砖块越多,则得分越高。要想得高分,需要提前预判小球得反弹轨迹。
运行效果
1 开始游戏
![](https://i-blog.csdnimg.cn/blog_migrate/d14096457dca995959ee1e19da95a681.png)
2 小球和砖块碰撞
![](https://i-blog.csdnimg.cn/blog_migrate/f3b7dd55c682f3d9d22987703bc8d37f.png)
3 游戏结束
![](https://i-blog.csdnimg.cn/blog_migrate/52a3711af5f754ea04c08f191adb31d2.png)
关键代码
public class ExplodeObject extends GameObject{
private Random random = new Random();
private final int DEFAULT_RADIUS = 30;// 初始半径
private final int DEFAULT_COUNT = 25;// 初始粒子个数
private java.util.List<Particle> list = new ArrayList<>();
private int frames = 0;
public ExplodeObject(){
for (int i = 0; i < DEFAULT_COUNT; i++) {
Particle p = new Particle(x, y, random.nextInt(3) + 2);
p.setSpeed(random.nextInt(3) + 2);
p.setNewRate(0.1);
list.add(p);
}
}
@Override
public void draw(Graphics g) {
g.setColor(getColor());
for (int i = 0; i < list.size(); i++) {
Particle p = list.get(i);
g.fillOval(p.x, p.y, p.radius * 2, p.radius * 2);
}
}
@Override
public void onTick() {
frames++;
for (int i = 0; i < list.size(); i++) {
Particle p = list.get(i);
double temp = DEFAULT_RADIUS * p.getNewRate();
double angle = (2 * Math.PI / DEFAULT_COUNT)*i;
p.x = x+getWidth()/2+(int) Math.round(temp*Math.sin(angle));
p.y = y+getHeight()/2+(int) Math.round(temp * Math.cos(angle));
//p.radius= (int) Math.round(p.radius*0.8);
//System.out.println(String.format("p.x:%d, p.y:%d, p.radius:%d", p.x,p.y,p.radius));
p.setNewRate(p.getNewRate() + 0.05*p.getSpeed());
}
if (frames > 30)// 只需要绘制30帧(hard code)
setGone(true);
}
}