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を変えてユニークな模様をかきなさい。