2021年11月22日 星期一

week07

 
STEP 01-1

讓球掉下來,控制速度
掉落的金幣(座標x,y)

//Step01-1:能不能東西動起來!
float x=250,y=0,vx=0,vy=3;
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  ellipse(x,y,50,50);
  //y++;//速度1,2,3,...
  //y++;
  //y++;
  //y=y+3;//3是速度
  y=y+vy;//vy是速度
}

STEP 01-2

//Step01-2:不只1個在動!!!
float x=250,y=0,vx=0,vy=3;
float x2=150,y2=50,vx2=0,vy2=2;
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;//vy2是速度
}

STEP 01-3


//Step01-3:很多組!for+陣列
float []x={250,150};
float []y={0,50};
float []vx={0,0};
float []vy={3,2};
void setup(){
  size(500,600);
}
void draw(){
  background(255);
  for(int i=0;i<2;i++){
  ellipse(x[i],y[i],50,50);
  y[i]=y[i]+vy[i];//vy是速度
  }
}


用for迴圈讓多個圓落下
//Step01-3:很多組!for+陣列
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++){   ///i=球的個數
  ellipse(x[i],y[i],50,50);
  y[i]=y[i]+vy[i];//vy是速度
  }
}

STEP 01-4


碰到上下牆壁回彈

//Step01-4:很多組!for+陣列
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];//碰到下方
  if(y[i]<0) vy[i]=-vy[i];//接到上方
  }
}

STEP 02-1

用滑鼠移動紅球,碰到黃球時,該黃球會暫停

//Step02-1:mouse碰到球,可以得分
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(255,255,0);
  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];//碰到下方
  if(y[i]<0) vy[i]=-vy[i];//接到上方
  }
  fill(255,0,0);
  ellipse(mouseX,mouseY,50,50);
}

STEP 02-2


紅球碰到黃球 黃球就會消失
//Step02-2:mouse碰到球,可以得分
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;//如果死掉了,continue 換下一個
  fill(255,255,0);
  ellipse(x[i],y[i],50,50);
  y[i]=y[i]+vy[i];//vy是速度
  if(y[i]>600) vy[i]=-vy[i];//碰到下方
  if(y[i]<0) vy[i]=-vy[i];//接到上方
  }
  fill(255,0,0);
  ellipse(mouseX,mouseY,50,50);
}

STEP 02-2(練習)



滑鼠按著背景變紅色 放開變綠色
//Step02-2 練習boolean變數 true成立 false不成立
boolean down;//按下去
void setup(){
  size(500,300);
}
void draw(){
  if(mousePressed)down=true;
  else down=false;
  print(down);
  if( down )background(255,0,0);//紅色
  else background(0,255,0);//綠色
}


沒有留言:

張貼留言