まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを

Processingでランダムに記号を描く2

形と色がランダムに変わるようにしました。
ストライプに関してはforで書いていたのですが、色がうまいこといかなかったので、ひとまずは力技の汚いコードです。

f:id:prince9:20170706031249p:plain

//グリッドのサイズ
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();
    }