2021年11月22日 星期一

week07-疫苗認證老人

 今天要做會掉落的球

先把球做出來


程式碼:

float x=250,y=250,vx=0,vy=3;

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  //y++;//落下速度

  //y=y+3;//y++的三倍速度

  y=y+vy;//vy是速度

}


再來做出第二顆球,然後速度要不一樣


程式碼:

float x=250,y=0,vx=0,vy=4;

float x2=150,y2=0,vx2=0,vy2=3;

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  ellipse(x2,y2,50,50);

  y=y+vy;//vy是速度

  y2=y2+vy2;

}


再來用陣列跟迴圈來做球

程式碼:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  for(int i=0; i<4 ;i++){

  ellipse(x[i],y[i],50,50); 

  y[i] = y[i] + vy[i];//vy是速度

  }

}


再來是球碰到地板跟天花板會回彈

程式碼:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  for(int i=0; i<4 ;i++){

  ellipse(x[i],y[i],50,50); 

  y[i] = y[i] + vy[i];//vy是速度

  //以下為回彈

  if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的

  if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變

  }

}


然後做出一個碰到會暫停的球


程式碼:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  for(int i=0; i<4 ;i++){

    fill(#F7E302);

  ellipse(x[i],y[i],50,50); 

  if(dist(mouseX,mouseY,x[i],y[i])<=50){

      continue;

    }

  y[i] = y[i] + vy[i];//vy是速度

  if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的

  if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);

  }

}


碰到球就消失

程式碼:
float []x={250,150,350,300};
float []y={0,50,80,100};
float []vy={3,2,2.5,4};
boolean []dead={false,false,false,false};//false 0,true 1
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  for(int i=0; i<4 ;i++){
  if(dist(mouseX,mouseY,x[i],y[i])<=50){
      dead[i]=true;//碰到就死掉
    }
      if(dead[i]==true)continue;//如果沒有死掉
      fill(#F7E302);ellipse(x[i],y[i],50,50); 
      y[i] = y[i] + vy[i];//vy是速度
      if(y[i]>600)vy[i]=-vy[i];//碰到地板後vy[i]會變成負的
      if(y[i]<0)vy[i]=-vy[i];//再碰到後會再變
    }

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);
  
}












沒有留言:

張貼留言