当我向owl添加参数“Color”时,它表示方法owl不适用? 我想让猫头鹰变成任意颜色的随机颜色吗?这是Reas和Fry的处理书的练习。
void setup ( ) {
size(700,500);
background(200);
smooth( );
frameRate(10);
}
void pick () {
color (random(255),random(255),random(255));
}
void draw ( ) {
owl(35,100);
}
void owl (int x, int y, color z) {
pick ();
stroke(0) ;
strokeWeight(70) ;
line(x, -35+y, x, -65+y) ; // body
noStroke() ;
fill(255) ;
ellipse(-17.5+x, -65+y, 35, 35) ; // left eye dome
ellipse( 17.5+x, -65+y, 35, 35) ; // right eye dome
arc(0+x, -65+y, 70, 70, 0, PI) ;
fill(0) ;
ellipse(-14+x, -65+y, 8, 8) ; // left eye
ellipse( 14+x, -65+y, 8, 8) ; // right eye
quad(0+x, -58+y, 4+x, -51+y, x, -44+y, -4+x, -51+y) ;
}
答案 0 :(得分:2)
v.k。实际上是对的,虽然他没有告诉你为什么颜色不会改变。问题当然是你用两个参数调用owl,而它需要三个。据我所知,你想用pick()
方法选择随机颜色,因此你不需要第三个参数。
void owl (int x, int y, color z) {
应该是
void owl (int x, int y) {
此外,您需要以正确创建的随机颜色填充(或描边)事物。问题是,只要你没有在fill()
或stroke()
方法中传递它,它就不会为任何颜色着色......所以你需要在猫头鹰()中以某种方式获得那种颜色因此,您可以从pick()
命令返回它,并像这样使用它:
color pick () {
return color (random(255),random(255),random(255));
}
并在owl方法中检索它并将其存储在变量中以便您可以使用它:
color z = pick();
然后改变你改变的眼睛的颜色
fill(0);
为:
fill(z);
以下是最终的代码,以防我感到困惑:
void setup ( ) {
size(700,500);
background(200);
smooth( );
frameRate(10);
}
color pick () {
return color (random(255),random(255),random(255));
}
void draw ( ) {
owl(35,100);
}
void owl (int x, int y) {
color z = pick();
stroke(0) ;
strokeWeight(70) ;
line(x, -35+y, x, -65+y) ; // body
noStroke() ;
fill(255) ;
ellipse(-17.5+x, -65+y, 35, 35) ; // left eye dome
ellipse( 17.5+x, -65+y, 35, 35) ; // right eye dome
arc(0+x, -65+y, 70, 70, 0, PI) ;
fill(z) ;
ellipse(-14+x, -65+y, 8, 8) ; // left eye
ellipse( 14+x, -65+y, 8, 8) ; // right eye
quad(0+x, -58+y, 4+x, -51+y, x, -44+y, -4+x, -51+y) ;
}
答案 1 :(得分:1)
color
是颜色的处理数据类型。它知道colorMode()
。问题很简单,你自己的方法需要3个参数void owl (int x, int y, color z) {...
,你用2 owl(35,100)
调用它。如果你说:
owl(35,100, color(random(255),random(255),)random(255));
它会起作用。