Processingでランダムに記号を描く2
形と色がランダムに変わるようにしました。
ストライプに関してはforで書いていたのですが、色がうまいこといかなかったので、ひとまずは力技の汚いコードです。
//グリッドのサイズ int gridSize = 50; //ランダムの値 int rd1; //色ランダム int colrd; //繰り返し描画用 int i,j; void setup() { size(400,400); background(0); noLoop(); } void draw() { background(0); for(j = 0; j < height/gridSize+1; j++){ for (i = 0; i < width/gridSize+1; i++) { rd1 = int(random(14)); shapeParts(); /* グリッド線を引きたい場合は下記 noFill(); strokeWeight(1); stroke(0); rect(gridSize * i, gridSize * j, gridSize, gridSize); */ } } strokeWeight(5); fill(0); stroke(255,186,56); rect(gridSize * 4, gridSize * 3, gridSize * 5, gridSize *2); strokeWeight(2); rect(gridSize * 4+9, gridSize * 3+9, gridSize * 5-20, gridSize *2-20); } void shapeParts() { switch(rd1) { case 0: //三角 noStroke(); colorRandom(); triangle(gridSize * i,gridSize * j,gridSize * i,gridSize * j+gridSize,gridSize * i+gridSize,gridSize * j); break; case 1: //リボン noStroke(); colorRandom(); triangle(gridSize * i,gridSize * j,gridSize * i,gridSize * j+gridSize,gridSize * i+gridSize,gridSize * j); triangle(gridSize * i,gridSize * j,gridSize * i+gridSize,gridSize * j+gridSize,gridSize * i+gridSize,gridSize * j); break; case 2: //三角ふたつ1 noStroke(); colorRandom(); triangle(gridSize * i,gridSize * j,gridSize * i+25,gridSize * j+25,gridSize * i+gridSize,gridSize * j); triangle(gridSize * i+25,gridSize * j+25,gridSize * i,gridSize * j+gridSize,gridSize * i+gridSize,gridSize * j+gridSize); break; case 3: //三角ふたつ2 noStroke(); colorRandom(); triangle(gridSize * i,gridSize * j,gridSize * i,gridSize * j+gridSize,gridSize * i+25,gridSize * j+25); triangle(gridSize * i+gridSize,gridSize * j,gridSize * i+25,gridSize * j+25,gridSize * i+gridSize,gridSize * j+gridSize); break; case 4: //円 noStroke(); ellipseMode(CORNER); colorRandom(); ellipse(gridSize * i, gridSize * j, gridSize, gridSize); break; case 5: //円輪郭のみ noStroke(); ellipseMode(CORNER); colorRandom(); ellipse(gridSize * i, gridSize * j, gridSize, gridSize); fill(0); ellipse(gridSize * i+10, gridSize * j+10, gridSize-20, gridSize-20); break; case 6: //四角+円 noStroke(); colorRandom(); rect(gridSize * i, gridSize * j, gridSize, gridSize); fill(0); ellipse(gridSize * i+10, gridSize * j+10, gridSize-20, gridSize-20); break; case 7: //四角輪郭のみ noStroke(); colorRandom(); rect(gridSize * i, gridSize * j, gridSize, gridSize); fill(0); rect(gridSize * i+10, gridSize * j+10, gridSize-20, gridSize-20); break; case 8: //階段 noStroke(); colorRandom(); rect(gridSize * i,gridSize * j+34,17,16); rect(gridSize * i+16,gridSize *+ j+18,17,32); rect(gridSize * i+32,gridSize * j,18,50); break; case 9: //階段 noStroke(); colorRandom(); rect(gridSize * i,gridSize * j+34,16,17); rect(gridSize * i,gridSize * j+17,32,17); rect(gridSize * i,gridSize * j,50,17); break; case 10: //ダイヤ noStroke(); colorRandom(); quad(gridSize * i+25, gridSize * j, gridSize * i, gridSize * j+25, gridSize * i+25, gridSize * j+50, gridSize * i+50, gridSize * j+25); break; case 11: //ストライプ縦 noStroke(); fill(255,186,56); rect(gridSize * i,gridSize * j,10,50); fill(0); rect(gridSize * i+10,gridSize * j,10,50); fill(255,186,56); rect(gridSize * i+20,gridSize * j,10,50); fill(0); rect(gridSize * i+30,gridSize * j,10,50); fill(255,186,56); rect(gridSize * i+40,gridSize * j,10,50); break; case 12: //ストライプ横 noStroke(); fill(255,186,56); rect(gridSize * i,gridSize * j,50,10); fill(0); rect(gridSize * i,gridSize * j+10,50,10); fill(255,186,56); rect(gridSize * i,gridSize * j+20,50,10); fill(0); rect(gridSize * i,gridSize * j+30,50,10); fill(255,186,56); rect(gridSize * i,gridSize * j+40,50,10); break; case 13: noFill(); noStroke(); break; } } void colorRandom() { color[] c = new color[4]; /* c[0] = color(225,211,86); c[1] = color(113,217,254); c[2] = color(49,210,187); c[3] = color(200,120,181); */ c[0] = color(15,217,255); c[1] = color(73,232,171); c[2] = color(254,142,167); c[3] = color(255,186,56); colrd = int(random(0, 3)); switch(colrd) { case 0: fill(c[0]); break; case 1: fill(c[1]); break; case 2: fill(c[2]); break; case 3: fill(c[3]); break; } } //マウスを押して再描画 void mousePressed() { redraw(); }