我是编程新手,很抱歉这个愚蠢的问题。我搜索了这个网站和其他人,发现了我的问题,但我无法应用他们的解决方案,因为他们的编程不同。
我有10x10网格,我需要为其中一行或列着色。我尝试在“for”中添加if语句,但无法在那里定义row和col。我很困惑,如果你能帮助我,我会很高兴,谢谢!
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);}
}
}
}
答案 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
时,将填充值设置为红色。但是你永远不会把填充值改回原来的颜色!
您可能希望为网格中的每个圈设置填充值。