我想显示一个8x8的棋盘,但对于下面的代码,我只能得到交替颜色的水平线。
Color color = Color.gray;
for (int row = 0; row < 8; row++)
{
for (int col = 0; col < 8; col++)
{
if (color == Color.gray)
{
color = Color.lightGray;
}
else
{
color = Color.gray;
}
g.setColor(color);
g.fillRect(row*80, col*80, 80, 80);
}
}
3条答案
按热度按时间3okqufwl1#
您对每条垂直线使用相同的图案(意味着从相同的颜色和切换开始)。
但是您需要切换每一条垂直线的起点,以便两条连续垂直线的起点不相同。
所以在你的代码中也需要改变每一行的颜色,因为每一行结束后的颜色和下一行开始时的颜色是一样的。
wyyhbhjk2#
一个典型的方法是设置
Color
基于列索引的值。也就是说,如果索引是偶数,则使用一个Color
,如果是奇怪的,你可以用另一个Color
基于列。但是,您将遇到相同的问题,因为这将只是交替的列值。当您开始一个新行时,您将得到与上面列相同的颜色,这样您就可以看到相同颜色的垂直列。
因此,解决方案是在确定颜色时同时使用行/列索引:
另外,请注意,应该使用大写颜色变量,因为它们遵循命名“static final”变量的约定。小写变量的存在只是为了向后兼容,可以随时删除。
eanckbw93#
你创建你的董事会列明智的,每列去垂直。
切换每个字段的颜色,没有错。
在列的末尾,您得到的颜色与列的开头不同,这是正确的。
然后切换颜色并开始下一列,这意味着您使用与前一列相同的颜色开始下一列。i、 你总是在同一行中使用相同的颜色。
若要解决此问题,请在每列之后再次切换,或不切换每列的第一个字段。