处理中的同心圆

时间:2018-01-17 17:28:51

标签: loops processing

我已经编码了两个月了,我决定尝试将同心圆作为处理项目。已经有两个星期,我已经想出了如何创建圆圈,但我想随机化每个圆圈的颜色,但不要让它看起来像马里奥卡丁车的彩虹之路。这是我的代码希望你可以帮助

void setup()
{  
  size(500,500);
  background(131);
}


void draw()
{

  coolCircles();

}


void coolCircles()
{       
  for(int x = 500; x >= 20; x-=20)
  {
      int r = (int)(random(1,255));
      int g = (int)(random(1,255));
      int b = (int)(random(1,255));

      fill(r, g, b);
      ellipse(250, 250, x, x);
  }
}

1 个答案:

答案 0 :(得分:0)

Stack Overflow并非真正针对这样的一般问题而设计。但是我会在一般意义上尝试提供帮助。

我假设当你说:

  

不要让它看起来像Mario Kart的彩虹之路

您的意思是要限制圆圈的颜色。有一百万种不同的方法可以做到这一点,您选择哪种方法取决于您想要做什么。我建议breaking your problem down into smaller pieces并尝试用英语写出你想要发生的事情,然后再考虑用代码实现它。

但关键是你的代码的这一部分:

int r = (int)(random(1,255));
int g = (int)(random(1,255));
int b = (int)(random(1,255));

fill(r, g, b);

这是你想出颜色的地方。您需要限制这些数字。同样,你如何做到这一点取决于你想要发生什么。但是例如:

float gray = random(256);
fill(gray);

这将为您提供灰度调色板而不是彩虹调色板。或者:

float r = random(256);
fill(r, 0, 0);

这会给你一个红色调色板。或者:

float r = random(256);
float g = random(r);
float b = random(r);
fill(r, g, b);

这会给你主要是红色的颜色,但也有一些绿色和蓝色。

关键是你需要首先能够解释(对你自己,用英语)你正在尝试做什么。如果你有,那么你可以使用代码来获得你想要的效果。祝你好运。