2023年9月28日 星期四

Week03 啟動

 Week03


1.先叫出小視窗,接著在中間畫上一點


void setup(){
  size(500,500);
}
float x=250,y=250;
void draw(){
  ellipse(x,y,5,5);
}






接著再加上一點程式碼讓中間的點可以變長成一條線

void setup(){
  size(500,500);
}
float x=250,y=250;
float dx=1,dy=1;
void draw(){
  ellipse(x,y,5,5);
  x+=dx;
  y+=dy;
}





2.將背景調為黑色,點可以隨著設定的跑,值超過某項數值則會反彈


void setup(){
  size(500,500);
  dx=random(-1,+1);//亂數往哪裡跑
  dy=random(-1,+1);//亂數往哪裡跑
}
float x=250,y=250;
float dx=1,dy=1;
void draw(){
  background(0);
  ellipse(x,y,5,5);
  x+=dx;
  y+=dy;
  if(x<0||x>500)dx=-dx;
  if(y<0||y>500)dy=-dy;
}



3.新增一些程式碼讓點變多(20)


void setup(){
  size(500,500);
  for(int i=0;i<20;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//dx=random(-1,+1);//亂數往哪裡跑
    dy[i]=random(-1,+1);//dy=random(-1,+1);//亂數往哪裡跑
  }
}
float[]x=new float[20];//float x=250,y=250;
float[]y=new float[20];
float []dx=new float[20];//float dx=1,dy=1;
float []dy=new float[20];
void draw(){
  background(0);
  for(int i=0;i<20;i++){
  ellipse(x[i],y[i],5,5);
  x[i]+=dx[i];
  y[i]+=dy[i];
  if(x[i]<0||x[i]>500)dx[i]=-dx[i];
  if(y[i]<0||y[i]>500)dy[i]=-dy[i];
  }
}





4.新增一些程式碼,使點與點連起來

void setup(){
  size(500,500);
  for(int i=0;i<20;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//dx=random(-1,+1);//亂數往哪裡跑
    dy[i]=random(-1,+1);//dy=random(-1,+1);//亂數往哪裡跑
  }
}
float[]x=new float[20];//float x=250,y=250;
float[]y=new float[20];
float []dx=new float[20];//float dx=1,dy=1;
float []dy=new float[20];
void draw(){
  background(0);
  for(int i=0;i<20;i++){
  ellipse(x[i],y[i],5,5);
  for(int k=0;k<20;k++){
    stroke(255,0,0);
    if(dist(x[i],y[i],x[k],y[k])<100)
      line(x[i],y[i],x[k],y[k]);
  }

  x[i]+=dx[i];
  y[i]+=dy[i];
  if(x[i]<0||x[i]>500)dx[i]=-dx[i];
  if(y[i]<0||y[i]>500)dy[i]=-dy[i];
  }
}



5.更改一些程式碼讓點變多、線的顏色、流暢度


void setup(){
  size(500,500);
  for(int i=0;i<N;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//dx=random(-1,+1);//亂數往哪裡跑
    dy[i]=random(-1,+1);//dy=random(-1,+1);//亂數往哪裡跑
  }
}
int N=40;
float[]x=new float[N];//float x=250,y=250;
float[]y=new float[N];
float []dx=new float[N];//float dx=1,dy=1;
float []dy=new float[N];
void draw(){
  background(0);
  for(int i=0;i<N;i++){
  ellipse(x[i],y[i],5,5);
  for(int k=0;k<N;k++){
    float d=dist(x[i],y[i],x[k],y[k]);
    stroke(2.55*(100-d));
    if(d<100)
      line(x[i],y[i],x[k],y[k]);
  }
  x[i]+=dx[i];
  y[i]+=dy[i];
  if(x[i]<0||x[i]>500)dx[i]=-dx[i];
  if(y[i]<0||y[i]>500)dy[i]=-dy[i];
  }
}





6.新增一些程式碼,讓點跟線可以互相吸引


void setup(){
  size(500,500);
  for(int i=0;i<N;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//dx=random(-1,+1);//亂數往哪裡跑
    dy[i]=random(-1,+1);//dy=random(-1,+1);//亂數往哪裡跑
  }
}
int N=40;
float[]x=new float[N];//float x=250,y=250;
float[]y=new float[N];
float []dx=new float[N];//float dx=1,dy=1;
float []dy=new float[N];
void draw(){
  background(0);
  for(int i=0;i<N;i++){
  ellipse(x[i],y[i],5,5);
  for(int k=0;k<N;k++){
    float d=dist(x[i],y[i],x[k],y[k]);
    stroke(2.55*(100-d));
    if(d<100){//距離夠近的話
      line(x[i],y[i],x[k],y[k]);
      dx[i]+=(x[k]-x[i])*0.00001;//加一點吸引力
      dy[i]+=(y[k]-y[i])*0.00001;//加一點吸引力
    }
  }
  x[i]+=dx[i];
  y[i]+=dy[i];
  if(x[i]<0||x[i]>500)dx[i]=-dx[i];
  if(y[i]<0||y[i]>500)dy[i]=-dy[i];
  }
}



-----------------------------------------------------------------------------------------------------------

更改背景顏色:工具-顏色選擇器



可以變換顏色的背景


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

void draw(){
  background(frameCount%360,83,95);
}



將背景更換為彩虹色

size(400,400);
colorMode(HSB,400);
for(int i=0;i<400;i++){
  for(int j=0;j<400;j++){
    stroke(i,400,400);
    point(i,j);
  }
}




叫出一些圓圈充滿背景

void setup(){
  size(300,300);
  colorMode(HSB,360,100,100);
}
float h,s,b;
void choose(){
  h=random(360);
  s=random(100);
  b=random(100);
}
void draw(){
  background(203,63,65);
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      fill(h,s,b);
      ellipse(30+j*60,30+i*60,60,60);
    }
  }
}


滑鼠點擊可以更換顏色

void setup(){
  size(300,300);
  colorMode(HSB,360,100,100);
  chooseColor();
}
void mousePressed(){
  chooseColor();
}
int I,J;
float h,s,b,dh,ds,db;
void chooseColor(){
  h=random(360);
  s=random(50,100);
  b=random(50,100);
  I=int(random(5));
  J=int(random(5));
  dh=random(-10,+10);
  ds=random(-10,+10);
  db=random(-10,+10);
}
void draw(){
  background(203,63,65);
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      if(i==I&&j==J)fill(h+dh,s+ds,b+db);
      fill(h,s,b);
      ellipse(30+j*60,30+i*60,60,60);
    }
  }
}


沒有留言:

張貼留言