gpt4 book ai didi

java - 通过 2D 数组构建游戏 - 如何更改数组部分的颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:15 24 4
gpt4 key购买 nike

我还是一个java初学者,我正在尝试创建一个游戏。我刚刚创建了一个 20 x 20 的板,并将其添加到二维正方形数组中。但是,我对某些语法感到困惑......我仍然很难编写正确的条件和算法,尤其是。

所以,我想做的就是用黑色填充 8X8 的内部正方形,然后将两侧的外部边界 2 列和行填充为不同颜色的红色。

我该如何解决这个问题?

到目前为止,我对行和列有两个 for 循环。

我知道我需要某种 if 语句,我猜测...就像 if ([row] == 1, 2, 19, 20 (最上面和最下面的行)...对于列也是如此

_gameSquares = new Square[GameConstants._numCol][GameConstants._numRow]; 
for (int col=0; col<GameConstants.numCol; col++) {
for (int row=0; row<GameConstants.numRow; row++) {
Square square;
// if (row == 1) {
// square = new Square(this, java.awt.Color.RED);
// }
// else
square = new Square(this, java.awt.Color.BLACK);
tile.setLocation(col*GameConstants.squareWidth,row*GameConstants.squareHeight);
_gameSquares[col][row] = square;

}
}

public void paintComponent(java.awt.Graphics g) {
super.paintComponent(g);
java.awt.Graphics2D brush = (java.awt.Graphics2D) g;
for (int col=0; col<GameConstants.numCol; col++) {
for (int row=0; row<GameConstants.numRow; row++) {
_gameSquares[col][row].paint(brush);
}
}
}

最佳答案

那么您希望逻辑取决于哪一行或哪一列?让我们以结构化的方式尝试一下。

请记住,数组是从 0 索引的,因此如果您有一个包含 20 个槽的数组,那么它们的编号为 0,1,2...18,19。

在这种情况下,如果您位于前两行或最后两行之一或前两列或最后两列之一(长句),则需要不同的颜色。

Color color = Color.BLACK; // Default color
if ( (row >= 0 && row <= 1) || (row >= 18 && row <= 19) (col >= 0 && col <= 1) || (col >= 18 && col <= 19)) {
color = Color.RED;
}
square = new Square(...

但是为了维持这一点,您可能应该将逻辑分解为一个单独的方法以获得更具可读性的代码,这是一个示例:

Color color = Color.BLACK; // Default color
if ( isBorder(col, row)) {
color = Color.RED;
}
...

private boolean isBorder(int col, int row) {
return (row >= 0 && row <= 1) || (row >= 18 && row <= 19) (col >= 0 && col <= 1) || (col >= 18 && col <= 19);
}

当然,这可以进一步清理,但这是一个开始,现在可以更轻松地阅读板的创建逻辑。

关于java - 通过 2D 数组构建游戏 - 如何更改数组部分的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8090395/

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