概述
利用java实现打砖块小游戏,游戏界面包括以下元素
- 顶部的各色砖块
- 底部的挡板
- 小球
- 游戏信息展示面板
- 玩法包括
使用鼠标或者键盘移动挡板
- 打掉砖块,得分
- 每一局有3次机会,挡板没有接到小球,机会减1
- 打掉黑色小球,会掉落道具,挡板接到道具,挡板会变长
- 可以选择游戏难度等级
功能实现
首先,整个Class继承自 GraphicsProgram, 程序启动后,先执行init() 方法,然后执行 run() 方法
public class Arkanoid extends GraphicsProgram
{
public void init()
{
// 进行初始化
}
public void run()
{
// 具体执行
}
}
然后,在 init() 中,进行游戏界面的创建。
创建砖块
创建砖块前,先准备一个存储颜色和颜色对应的分值的容器,这里用Map来实现,键保存Color对象,值保存分值
Map<Color,Integer> brickColors;
colors=new Color[]{
Color.BLACK,Color.BLUE,Color.CYAN,Color.DARK_GRAY,Color.GRAY,Color.GREEN,
Color.LIGHT_GRAY,Color.MAGENTA,Color.ORANGE,Color.PINK,Color.RED,Color.YELLOW
};
brickColors=new HashMap<>();
for(int i=0;i<colors.length;i++)
{
Color color=colors[i];
// 黑色砖块是特殊砖块,打掉不得分,但是可以掉落胶囊
if(color.getRGB() == Color.BLACK.getRGB())
{
brickColors.put(color,0);
}
else
{
brickColors.put(color,colors.length%(i+1)+1);
}
}
有了砖块颜色,接下来的就是创建指定行,列的砖块了,这里用 GRect 表示砖块。
需要注意的一点是,GRect 默认有1像素的边框,如果不去掉它,在计算砖块的宽度时,要考虑到这1像素。
final int ROWS=6;
final int COLUMNS=12;
// 砖块实心部分的宽,高
brickW=GAME_PANE_WIDTH/COLUMNS;
brickH=brickW/2;
for(int i=0;i<ROWS;i++)
{
for(int j=0;j<COLUMNS;j++)
{
GRect brick=new GRect(brickW,brickH);
brick.setFilled(true);
brick.setColor(colors[randomGenerator.nextInt(0,brickColors.size(