2020年5月1日 星期五

wk10

利用processing來做出 Lyto Different Colour

先做出2*2的圓



size(300,500);
ellipse(75,200+75,150,150);
ellipse(75+150,200+75,150,150);
ellipse(75,200+75+150,150,150);
ellipse(75+150,200+75+150,150,150);
--------------------------------------------------------------------------------
在做出3*3的



size(300,500);
ellipse(50,200+50,100,100);
ellipse(50+100,200+50,100,100);
ellipse(50+100+100,200+50,100,100);

ellipse(50,200+50+100,100,100);
ellipse(50+100,200+50+100,100,100);
ellipse(50+100+100,200+50+100,100,100);

ellipse(50,200+50+100+100,100,100);
ellipse(50+100,200+50+100+100,100,100);
ellipse(50+100+100,200+50+100+100,100,100);

------------------------------------------------------------------------------------------
用另一種方式來做3*3


size(300,500);
for(int y=0;y<3;y++){
  for(int x=0;x<3;x++){
    ellipse(50+x*100,200+50+y*100,100,100);
  }
}
---------------------------------------------------------------------------------------
利用修改n的值來更改球的數量



size(300,500);
///因為寬度是300,有3個球去分,每個球分到直徑100,半徑50
///因為寬度是300,有n個球去分,每個球分到直徑300/n,半徑300/n/2
int n=5;
int r=300/n, w=r/2;
for(int y=0;y<n;y++){
  for(int x=0;x<n;x++){
    ellipse(w+x*r,200+w+y*r,r,r);
  }
}

----------------------------------------------------------------------------
讓球可以從小變到大


void setup(){
  size(300,500);
}


int n=5;
int r=300/n, w=r/2,rr=0;///會變動的R直徑,我們叫他rr

void draw(){
  for(int y=0;y<n;y++){
  
    for(int x=0;x<n;x++){
  
      ellipse(w+x*r,200+w+y*r,rr,rr);///從小變到大
  
    }
  }
  if(rr<r) rr++;//如國沒有超過範圍,++從小變到大
}

-------------------------------------------------------------------------------------------------
讓球可以從小變到大,並且可以讓球越變越多


void setup(){
  size(300,500);
}
int n=2,rr=0;

void draw(){
  background(0);
  int r=300/n, w=r/2;
  for(int y=0;y<n;y++){
    for(int x=0;x<n;x++){
      ellipse(w+x*r,200+w+y*r,rr,rr);
    }
  }
  if(rr<r) rr++;
  else{
    n++;//下一個數目
    rr=0;//從小開始長
  }
}
----------------------------------------------------------------------------------------------------

讓答案與其他不太一樣,並且把滑鼠只得地方改成紅色的


void setup(){
  size(300,500);
}
int ansX=1,ansY=2;///answer!!!
int n=3,rr=0;

void draw(){
  background(0);
  int r=300/n, w=r/2;
  for(int y=0;y<n;y++){
    for(int x=0;x<n;x++){
        if(x==ansX && y==ansY) fill(128);///答案要不同
        else fill(255);///白色
        if(dist(mouseX,mouseY,w+x*r,200+w+y*r)<w) fill(255,0,0);
      ellipse(w+x*r,200+w+y*r,rr,rr);
    }
  }
  if(rr<r) rr++;

------------------------------------------------------------------------------------------
點擊到對的答案後,換下一題

void setup(){
  size(300,500);
}
int ansX=1,ansY=2;///answer!!!
int n=3,rr=0;

void draw(){
  background(0);
  int r=300/n, w=r/2;
  for(int y=0;y<n;y++){
    for(int x=0;x<n;x++){
        if(x==ansX && y==ansY) fill(128);
        else fill(255);//white
        if(dist(mouseX,mouseY,w+x*r,200+w+y*r)<w) {///現在mouse選中誰
          if(mousePressed && x==ansX && y==ansY){//他剛好也是答案
            ansX= int(random(n));
            ansY= int(random(n));
          }
        }
      ellipse(w+x*r,200+w+y*r,rr,rr);
    }
  }
  if(rr<r) rr++;
}

-----------------------------------------------------------------------------------------------------
讓球的顏色可以改變

void setup(){
  size(300,500);
  colorMode(HSB,256);
}
int ansX=1,ansY=2;
int n=3,rr=0;
int h=0;//Hue 色相,色調
void draw(){
  background(0);
  int r=300/n, w=r/2;
  for(int y=0;y<n;y++){
    for(int x=0;x<n;x++){
        if(x==ansX && y==ansY) fill(h-15,243,234);
        else fill(h,255,255);
        if(dist(mouseX,mouseY,w+x*r,200+w+y*r)<w) {
          if(mousePressed && x==ansX && y==ansY){
            ansX= int(random(n));
            ansY= int(random(n));
            h+=20;
            if(h>256) h=0;
          }
        }
      ellipse(w+x*r,200+w+y*r,rr,rr);
    }
  }
  if(rr<r) rr++;
}

沒有留言:

張貼留言