gpt4 book ai didi

java - 突围游戏: Part of the stones constructor isn't updating

转载 作者:行者123 更新时间:2023-11-30 05:46:30 24 4
gpt4 key购买 nike

我目前正在开发一款 BreakOut 游戏,并且即将完成。我目前遇到的唯一问题是,当球击中石头时,石头的颜色不会改变。石头的颜色由其类型(1-3)定义,每当石头被击中时,其类型就会减少1。我知道石头的类型在被击中时会成功减少,因为当类型变为0时它就会消失。

这是stones类的构造函数:

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);
}

有谁知道为什么石头的颜色在击中时不会改变,尽管它的类型已成功减少?提前致谢!

最佳答案

你永远不会改变石头的颜色。它是在构造函数中设置的,但在其他地方没有更改(不在您显示的代码中)。

我什至不会让石头保存颜色值,而是让绘图代码决定给它着色,也许是这样的:

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) {

// ********
int type = stones[i][j].getType();
Color color = .... set color based on type value here

// *******

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);
}
}
}
}

关于java - 突围游戏: Part of the stones constructor isn't updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54736525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com