プログラミング歴1週間の者です。
前提・実現したいこと
要求されている内容は全て達成していますが、
コードをコンパクトにする方法を探しています。
特にランダムを10回も呼ばなくていい方法を探しています。
コードの概要
カーソルの位置によって形を変える円と四角を太さ3の縁付きで描写し、初期の青,赤,黒,そして背景のシアンの色をマウスのクリックによってランダムなRGB色に変化させる(ただし背景の色はグレースケールから変化させる)というものです。
該当のソースコード
Java
1color backgroundColour = color(0, 255, 255); //initially cyan 2color strokeColour = color(0); //initially black 3color rectangleColour = color(255, 0, 0); //initially red 4color ellipseColour = color(0, 0, 255); //initially blue 5 6void setup() 7{ 8 size(500, 500); 9} 10 11void draw() 12{ 13 background(backgroundColour); //initially cyan 14 rectMode(CORNERS); //use 2 diagonal coordinates for the rectangle 15 ellipseMode(CORNERS); //use 2 diagonal coordinates for the bounding box 16 stroke(strokeColour); //initially black 17 strokeWeight(3); 18 fill(rectangleColour); //initially red 19 rect(mouseX, mouseY, 1.5, height-1.5); //move the shapes towards the centre by 1.5 to show full stroke width 20 rect(mouseX, mouseY, width-1.5, 1.5); 21 fill(ellipseColour); //initially blue 22 ellipse(1.5, 1.5, mouseX-1.5, mouseY-1.5); 23 ellipse(height-1.5, width-1.5, mouseX+1.5, mouseY+1.5); 24} 25 26void mousePressed() 27{ 28 backgroundColour = color(random(256)); 29 rectangleColour = color(random(256), random(256), random(256)); 30 ellipseColour = color(random(256), random(256), random(256)); 31 strokeColour = color(random(256), random(256), random(256)); 32} 33
試した事
色を生成する機能を作り、それをそれぞれの形に適応させる方針で模索しています。
補足情報(FW/ツールのバージョンなど)
Processing 3.5.4
検索スキルの向上は自分の今後の課題です。
コードをコンパクトにする方法ではありませんが、背景、四角、円、線をそれぞれ単純なランダム色にしたいならそれでいいと思いますが、規則性を持たせて連続的に変えた方が美しくなると思います。どうやるかはプログラミングよりも色彩センスの問題になります。
要求されている内容が完全ランダムな色彩なので、解決策としてランダムな色を生成する機能を作り,それをそれぞれの形に適応させる方針で模索しています。
それなら、ランダムな色を返す関数を作って呼ぶことで、コード上 random の数は減らせますね。実際に random が呼ばれる回数は変わりませんが。
正にそれを求めています。現在
```
void generateRandomColour()
{
試行錯誤中 RandomColour = color(random(256),random(256),random(256));
}
```
の様なものを追加していじっています。しかし、void mousePressed() との連動が上手くいっていません。
回答3件
あなたの回答
tips
プレビュー