3つのdrawRdmを用意してもいいのですが、'r', 'g', 'b' を引数にしてdrawRdmはひとつにしました。
nextColor()を使わずに次のようにするとこも可能です。
public void drawRdm(char rgb) {
for(int i=0; 10>i; i++){
//nextColor();
int r=0;
int g=0;
int b=0;
if (rgb=='r'){
r = (int)(256*Math.random());
}
if (rgb=='g'){
g = (int)(256*Math.random());
}
if (rgb=='b'){
b = (int)(256*Math.random());
}
c = new Color(r,g,b);
bfg.setColor(c);
int x = (int)(400*Math.random());
int y = (int)(300*Math.random());
int h = (int)(50*Math.random()+5);
bfg.fillOval(x-h/2,y-h/2,h,h);
}
}
また、あくまでnextColor()で色を設定するのだと考えるとchar rgbをnextColor()にさらに渡すこともできます。
public void drawRdm(char rgb) {
for(int i=0; 10>i; i++){
nextColor(rgb);
bfg.setColor(c);
int x = (int)(400*Math.random());
int y = (int)(300*Math.random());
int h = (int)(50*Math.random()+5);
bfg.fillOval(x-h/2,y-h/2,h,h);
}
}
この場合、nextColor にもchar rgbが必要です.
public void nextColor(char rgb){
int r=0;
int g=0;
int b=0;
if (rgb=='r'){
r = (int)(256*Math.random());
}
if (rgb=='g'){
g = (int)(256*Math.random());
}
if (rgb=='b'){
b = (int)(256*Math.random());
}
c = new Color(r,g,b);
}
nextColorの内容を変化させると色の変化の様子も変わります。
public void nextColor(char rgb){
int r=0;
int g=0;
int b=0;
if (rgb=='r'){
r = (int)(256*Math.random());
g = (int)(r*Math.random()/2);
b = (int)(r*Math.random()/2);
}
if (rgb=='g'){
g = (int)(256*Math.random());
b = (int)(g*Math.random()/2);
r = (int)(g*Math.random()/2);
}
if (rgb=='b'){
b = (int)(256*Math.random());
r = (int)(b*Math.random()/2);
g = (int)(b*Math.random()/2);
}
c = new Color(r,g,b);
}
drawRdmを変えてみます。
public void drawRdm(char rgb) {
int xx = (int)(400*Math.random());
int yy = (int)(300*Math.random());
for(int i=0; 10>i; i++){
nextColor(rgb);
bfg.setColor(c);
int x = (int)(xx+100*Math.random());
int y = (int)(yy+100*Math.random());
int h = (int)(50*Math.random()+5);
bfg.fillOval(x-h/2,y-h/2,h,h);
}
}
drawRdmやnextColorを変えてユニークな模様をかきなさい。