我目前正在开发一个 BreakOut 游戏,我几乎完成了。我目前唯一的问题是,当被球击中时,石头的颜色不会改变。石头的颜色由它的类型(1-3)定义,每当石头被击中时,它的类型就会减少1。我知道石头的类型在被击中时会成功减少,因为当类型变为0时它会消失。
这是石头类的构造函数:
public Stone(int type, Position pos) {
this.pos = pos;
this.type = type;
switch(this.type) {
case 1:
value = 5;
color = Color.LIGHT_GRAY;
break;
case 2:
value = 10;
color = Color.orange;
break;
case 3:
value = 15;
color = Color.green;
break;
}
}
这是绘制石头的方法:
private void drawStones(Graphics2D g2) {
stones = view.getGame().getLevel().getStones();
for (int i = 0; i < stones.length; i++) {
for (int j = 0; j < stones[1].length; j++) {
int x_position = (int) stones[i][j].getPosition().getX();
int y_position = (int) stones[i][j].getPosition().getY();
if(stones[i][j].getType() >= 1) {
g2.setColor(stones[i][j].getColor());
g2.fillRoundRect(x_position, y_position,
(int) ((double)Constants.SCREEN_WIDTH/Constants.SQUARES_X)-2,
(int) ((double)Constants.SCREEN_HEIGHT/Constants.SQUARES_Y)-2 ,1,1);
}
}
}
}
这就是在命中时更新石头类型的方法:
private void updateStonesAndScore() {
int posLine = ball.getHitStonePosition().getLine();
int posColumn = ball.getHitStonePosition().getColumn();
score = score + stones[posLine][posColumn].getValue();
System.out.println(stones[posLine][posColumn].getType());
stones[posLine][posColumn].setColor(stones[posLine][posColumn].getColor());
stones[posLine][posColumn].setType(stones[posLine][posColumn].getType()-1);
}
有谁知道为什么石头的颜色在击中时不会改变,尽管它的类型被成功地减少了?提前致谢!
智慧大石
相关分类