2020年10月27日 星期二

𝔍𝔒𝔗𝔇-week7

 今天進度:

1.產生三角形

2.改角度位置

3.改成會互動的圖形

4.會跟著鼠標移動的圖形

5.會自轉的圖形

6.接水果


1.

程式碼:

//triangle(50,0, 0, 90 , 100,90);


size(500,500);

for(int angle=0; angle<360; angle+=120)  //角度從0度開始,角度需小於360度,每次加120度

{

  float angle2 = radians(angle); //角度2等於角度的弧度

  float x = 100+cos(angle2) * 50;//cos(角度)*半徑

  float y = 100+sin(angle2) * 50;//sin(角度)*半徑

  ellipse( x, y, 2, 2); //畫2*2圓

}


執行結果:


↑產生三角形
↑產生圓形


2.
程式碼:

//triangle(50,0, 0, 90 , 100,90);

size(500,500);
beginShape();
for(int angle=0; angle<360; angle+=30)
{
  float angle2 = radians(angle);
  float x = 100+cos(angle2) * 50;
  float y = 100+sin(angle2) * 50;
  vertex(x,y);//ellipse( x, y, 2, 2);//產生頂點(x,y)
}
endShape();
執行結果:

↑產生12邊形(最後一邊未有黑線)
↑endShape內加入CLOSE可以完成圖形黑邊



3.
程式碼:
void setup()
{
  size(500,500);
}
void draw()
{
  beginShape();
  for(int angle=0; angle<360; angle+=145)
  {
    float angle2 = radians(angle+mouseX);//角度2隨著角度加滑鼠x座標改變弧度
    float x = 100+cos(angle2) * 50;
    float y = 100+sin(angle2) * 50;
    vertex(x,y);//ellipse( x, y, 2, 2);
  }
  endShape(CLOSE);
}


執行結果:

↑會轉動的等腰三角形





4.
程式碼:
void setup()
{
  size(500,500);
}
void draw()
{
  beginShape();
  for(int angle=0; angle<360; angle+=145)
  {
    float angle2 = radians(angle+mouseX);//角度2隨著角度加滑鼠x座標改變弧度
    float x = mouseX+cos(angle2) * 50;//x隨滑鼠x座標加角度2改變
    float y = mouseY+sin(angle2) * 50;//y隨滑鼠y座標加角度2改變
    vertex(x,y);//ellipse( x, y, 2, 2);
  }
  endShape(CLOSE);
}


執行結果:


5.
程式碼:
void setup()
{
  size(500,500);
}
void draw()
{
  beginShape();
  for(int angle=0; angle<360; angle+=145)
  {
    float angle2 = radians(angle+frameCount);//角度2隨著角度加幀數而改變
    float x = mouseX+cos(angle2) * 50;//x隨滑鼠x座標加角度2改變
    float y = mouseY+sin(angle2) * 50;//y隨滑鼠y座標加角度2改變
    vertex(x,y);//ellipse( x, y, 2, 2);
  }
  endShape(CLOSE);
}
frameCount一秒鐘轉60次
執行結果:





6.
程式碼:
float fruitX=150, fruitY=0;
float kidX=150, kidY=450;
int score=0;
void setup()
{
  size(500,500);
}
void draw()
{
  background(255);
  rect(kidX, kidY, 50, 80);
  kidX=mouseX;
  ellipse(fruitX, fruitY, 60 , 80);
  fruitY++;
  if(fruitY>kidY)
  {
    if(kidX< fruitX && fruitX < kidX+80)//如果水果在籃子的範圍內會執行以下動作
    {
      score+=10;
      fruitY=0; fruitX=random(50,450);
    }
    else//水果超過籃子的範圍
    {
      fruitY=0; fruitX=random(50,450);//水果重生
    }  
  }
   
}
執行結果:

程式碼:
float [] fruitX = new float[10];
float [] fruitY = new float[10];
float kidX=150, kidY=450;
int score=0;
void setup()
{
  size(500,500);
  for(int i=0; i<10; i++)
  {
    fruitX[i] = random(50,450);
    fruitY[i] = -i*100;
  }
}
void draw()
{
  background(255);
  rect(kidX, kidY, 50, 80);
  kidX=mouseX;
  for(int i=0; i<10; i++)//掉下許多水果
  {
    ellipse(fruitX[i], fruitY[i], 60 , 80);
    fruitY[i]++;
  if(fruitY[i]>kidY)
  {
    if(kidX< fruitX[i] && fruitX[i] < kidX+80)
    {
      score+=10;
      fruitY[i]=0; fruitX[i]=random(50,450);
    }
    else
    {
      fruitY[i]=0; fruitX[i]=random(50,450);
    }  
  }
  }
   
}

執行結果:



沒有留言:

張貼留言