2017年10月16日 星期一

week05 郭晉瑜上課筆記

第五周

用滑鼠移動控制眼球位置

void setup()
{
  size(800,800);
}
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(0,128,0);
  fill(#FA9703); ellipse(200,600,100,100); //大球顏色
  line(mouseX,mouseY,200,600);
  fill(#F9FA03); 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);
}


做出多顆砲彈

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;
void draw()
{
  background(0,128,0);
  fill(#FA9703); ellipse(200,600,100,100);
  for(int i=0;i<10;i++)
  {
    fill(#F9FA03); 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個後會當機
  if(now>=10) now=0; //加上這行後超過10個可以重新計算 不會當機
}

沒有留言:

張貼留言