带有处理的二维数组中的颜色形状
Color shapes in 2d array with Processing
我是编程新手,很抱歉提出愚蠢的问题。我搜索了这个网站和其他网站并找到了我的问题,但我无法应用他们的解决方案,因为他们的编程不同。
我有一个 10x10 的网格,我需要为其中的一行或一列着色。我试过在 "for" 中添加 if 语句,但无法在那里定义行和列。我很困惑,如果你能帮助我,我会很高兴,谢谢!
This is the task.
void setup()
{
size(400,400);
noStroke();
fill(180,50, 50, 100);
}
void draw()
{
background(255);
for (int row=0; row<10; row = row+1)
{
for (int col=0; col<10; col = col+1)
{
if(col==4)
{fill(255,0,0);
ellipse(20+col*40,20+row*40,30,30);}
else{
ellipse(20 + col*40, 20 + row*40,30,30);}
}
}
}
我强烈建议您养成 debugging your code 的习惯,以便您准确了解您的程序在做什么。
您有一个嵌套的 for
循环,它循环遍历网格中的每个圆。第一次看到 col==4
时,您将填充值设置为红色。但是你永远不会将填充值更改回其原始颜色!
您可能想要为网格中的每个 圆设置填充值。
正如@Kevin Workman 指出的那样,您已经设置了 fill
但忘记将其改回。既然你指出你是初学者,那么把画东西想象成"stateful",这意味着除非并且直到状态再次改变,否则它将保持原样。这适用于笔触、填充、所有颜色、当前坐标等属性。
当您进入更高级的级别时,您可能需要保存和恢复状态,这可以使用矩阵变换来完成。有关状态的非常简短的入门知识,请参阅此 Jenkov tutorial。
至于您的代码,将 fill(180,50,50)
添加到 else 块应该可以解决您的问题。
...
if(col==4){
fill(255,0,0); //The different color for 4th column
ellipse(20+col*40,20+row*40,30,30);
} else{
fill(180,50,50); //The default color
ellipse(20+col*40, 20+row*40,30,30);
}
...
我是编程新手,很抱歉提出愚蠢的问题。我搜索了这个网站和其他网站并找到了我的问题,但我无法应用他们的解决方案,因为他们的编程不同。
我有一个 10x10 的网格,我需要为其中的一行或一列着色。我试过在 "for" 中添加 if 语句,但无法在那里定义行和列。我很困惑,如果你能帮助我,我会很高兴,谢谢!
This is the task.
void setup()
{
size(400,400);
noStroke();
fill(180,50, 50, 100);
}
void draw()
{
background(255);
for (int row=0; row<10; row = row+1)
{
for (int col=0; col<10; col = col+1)
{
if(col==4)
{fill(255,0,0);
ellipse(20+col*40,20+row*40,30,30);}
else{
ellipse(20 + col*40, 20 + row*40,30,30);}
}
}
}
我强烈建议您养成 debugging your code 的习惯,以便您准确了解您的程序在做什么。
您有一个嵌套的 for
循环,它循环遍历网格中的每个圆。第一次看到 col==4
时,您将填充值设置为红色。但是你永远不会将填充值更改回其原始颜色!
您可能想要为网格中的每个 圆设置填充值。
正如@Kevin Workman 指出的那样,您已经设置了 fill
但忘记将其改回。既然你指出你是初学者,那么把画东西想象成"stateful",这意味着除非并且直到状态再次改变,否则它将保持原样。这适用于笔触、填充、所有颜色、当前坐标等属性。
当您进入更高级的级别时,您可能需要保存和恢复状态,这可以使用矩阵变换来完成。有关状态的非常简短的入门知识,请参阅此 Jenkov tutorial。
至于您的代码,将 fill(180,50,50)
添加到 else 块应该可以解决您的问题。
...
if(col==4){
fill(255,0,0); //The different color for 4th column
ellipse(20+col*40,20+row*40,30,30);
} else{
fill(180,50,50); //The default color
ellipse(20+col*40, 20+row*40,30,30);
}
...