2017年10月16日 星期一

Week 05 邱

#第05週
-------------------------------------------------------------------------------------------------------------------------
◎眼珠跟滑鼠轉

程式碼:

void setup(){
   size(400,400); 
}
void draw(){
   background(128);
   strokeWeight(20);
   ellipse(100,200,180,360);
   ellipse(300,200,180,360);
   
   float angle1=atan2((mouseY-200)/2,mouseX-300);
   float newX1=300+100*cos(angle1)/2;
   float newY1=200+200*sin(angle1)/2;
   ellipse(newX1,newY1,10,10);
   
   float angle2=atan2((mouseY-200)/2,mouseX-100);
   float newX2=100+100*cos(angle2)/2;
   float newY2=200+200*sin(angle2)/2;
   ellipse(newX2,newY2,10,10);

}




◎球跟著線發射

程式碼:

void setup(){
  size(400,800); 
}
float ballX=200,ballY=600;
float ballVX=0,ballVY=0;
float angle=0;
void draw(){
   background(157,223,249);
   fill(#F0F8FF); ellipse(200,600,100,100);
   line(mouseX,mouseY,200,600);
   fill(#FFFDD0); ellipse(ballX,ballY,30,30);
   angle = atan2(mouseY-600,mouseX-200);
   
   ballX += ballVX;
   ballY += ballVY;
}
void mouseMoved(){
   ballX = 200+50*cos(angle);
   ballY = 600+50*sin(angle);
}
void mousePressed(){
   ballVX = cos(angle);
   ballVY = sin(angle);

}




◎連續發射10顆球(超過10顆會當掉)

程式碼:

void setup(){
  size(400,800); 
}
float [] ballX = new float[10];
float [] ballY = new float[10];
float [] ballVX = new float[10];
float [] ballVY = new float[10];
float [] angle = new float[10];
int now=0;//now which ball is it

void draw(){
   background(157,223,249);
   fill(#F0F8FF); ellipse(200,600,100,100);
   for(int i=0;i<10;i++){
       fill(#FFFDD0); ellipse(ballX[i],ballY[i],30,30);
       ballX[i]+=ballVX[i];
       ballY[i]+=ballVY[i];
   }
      
   angle[now] = atan2(mouseY-600,mouseX-200);
   
}
void mouseMoved(){
   ballX[now] = 200+50*cos(angle[now]);
   ballY[now] = 600+50*sin(angle[now]);
}
void mousePressed(){
   ballVX[now] = cos(angle[now]);
   ballVY[now] = sin(angle[now]);
   now++;

}




◎連續發射10顆球(保持在10顆不會當掉)

程式碼:

void setup(){
  size(400,800); 
}
float [] ballX = new float[10];
float [] ballY = new float[10];
float [] ballVX = new float[10];
float [] ballVY = new float[10];
float [] angle = new float[10];
int now=0;//now which ball is it

void draw(){
   background(157,223,249);
   fill(#F0F8FF); ellipse(200,600,100,100);
   for(int i=0;i<10;i++){
       fill(#FFFDD0); ellipse(ballX[i],ballY[i],30,30);
       ballX[i]+=ballVX[i];
       ballY[i]+=ballVY[i];
   }
      
   angle[now] = atan2(mouseY-600,mouseX-200);
   
}
void mouseMoved(){
   ballX[now] = 200+50*cos(angle[now]);
   ballY[now] = 600+50*sin(angle[now]);
}
void mousePressed(){
   ballVX[now] = cos(angle[now]);
   ballVY[now] = sin(angle[now]);
   now++;
   if(now>=10)now=0;//protect the array not bigger than 10
}




沒有留言:

張貼留言