使用Processing处理2d数组中的颜色形状

时间:2017-10-05 20:12:26

标签: arrays colors 2d processing shapes

我是编程新手,很抱歉这个愚蠢的问题。我搜索了这个网站和其他人,发现了我的问题,但我无法应用他们的解决方案,因为他们的编程不同。

我有10x10网格,我需要为其中一行或列着色。我尝试在“for”中添加if语句,但无法在那里定义row和col。我很困惑,如果你能帮助我,我会很高兴,谢谢!

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

2 个答案:

答案 0 :(得分:3)

正如@Kevin Workman所指出的那样,你已经设置了fill但忘了将其改回来。由于您指出您是初学者,因此请将绘制内容视为&#34;有状态&#34;,这意味着除非并且直到状态再次更改,否则它将按设置进行维护。这适用于笔画,填充,所有颜色,当前坐标等属性。

当您进入更高级别时,可能需要保存和恢复状态,这可以使用矩阵转换完成。有关状态的简要介绍,请参阅此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);
  }
...

答案 1 :(得分:0)

我强烈建议您养成debugging your code的习惯,这样您就可以准确理解您的计划正在做什么。

你有一个嵌套的for循环遍历网格中的每个圆圈。第一次看到col==4时,将填充值设置为红色。但是你永远不会把填充值改回原来的颜色!

您可能希望为网格中的每个圈设置填充值。