顯示具有 week07 標籤的文章。 顯示所有文章
顯示具有 week07 標籤的文章。 顯示所有文章

2021年1月17日 星期日

week07_鄭皓文

           今天不做遊戲,今天咱要用這軟體畫圖,聽起來也不是很難,先從最簡單的三角形開始:

感覺有點像老DVD的播放鍵

程式碼如下:

size(500,500);
beginShape();
for(int angle=0; angle<360; angle+=120)
{
    float angle2 = radians(angle);
    float x = 100+cos(angle2)*50;
    float y = 100+sin(angle2)*50;
    vertex(x,y);
}

endShape(CLOSE);

接下來要做的是讓他旋轉起來,也不難:

莫名酷炫,感覺搓出了法陣

void setup()

{

  size(200, 200);

}

void draw()

{

  beginShape();

  for(int angle=0; angle<360; angle+=120)

  {

     float angle2 = radians(angle+mouseX);

     float x = 100+cos(angle2)*50;

     float y = 100+sin(angle2)*50;

     vertex(x,y);

  }

  endShape(CLOSE);

}

其實還可以做出更酷炫的版本,直接讓三角形隨滑鼠移動而轉動,並留下殘影:

有點像紙牌遊戲

程式碼如下:

void setup()

{

  size(800, 600);

}

void draw()

{

  beginShape();

  for(int angle=0; angle<360; angle+=120)

  {

     float angle2 = radians(angle+mouseX);

     float x = mouseX+cos(angle2)*50;

     float y = mouseY+sin(angle2)*50;

     vertex(x,y);

  }

  endShape(CLOSE);

} 

接下來是加分題,注意我是在朋友幫助下寫出這題的,放在這裡僅作存檔之用,所以請不要計分

int A=30;

void setup()

{

  size(500, 500);

}

 

void draw() {

  for (int x1=25; x1<=475; x1+=45)

  {

    for (int y1=25; y1<=475; y1+=45)

    {

      beginShape();

       if(y1%2==0)

       {

          if(x1%2==0)

          {

            A=20;

            stroke(0,0,0);

          }

          else

          {

            A=40;

            stroke(255,0,0);

          }

        }

        else

        {

          if(x1%2==0)

          {

            A=30;

            stroke(255,0,0);

          }

          else

          {

            A=30;

            stroke(0,0,0);

          }

        }       

      for (int angle=0; angle<360; angle+=120)

      {

        float angle2 = radians(angle+A);

        float x2 = x1+cos(angle2)*20;

        float y2 = y1+sin(angle2)*20;

        vertex(x2, y2); 

      }

      endShape(CLOSE);

      beginShape();

      for (int angle=0; angle<360; angle+=120)

      {

        if(y1%2==0)

        {

          if(x1%2==0) A=20;

          else A=40;

        }

        else A=30;

       

        float angle2 = radians(angle+A);

        float x2 = x1+cos(angle2)*12;

        float y2 = y1+sin(angle2)*12;

        vertex(x2, y2);

      }

      endShape(CLOSE);

      beginShape();

      for (int angle=0; angle<360; angle+=120)

      {

        if(y1%2==0)

        {

          if(x1%2==0) A=20;

          else A=40;

        }

        else A=30;

       

        float angle2 = radians(angle+A);

        float x2 = x1+cos(angle2)*4;

        float y2 = y1+sin(angle2)*4;

        vertex(x2, y2);

      }

      endShape(CLOSE);

    }

  }

}








2020年11月15日 星期日

KIO Week07

 補Week07

使用數學的cos、sin來製作圖形


用beginShape將所有頂點連接

endShape將最後點與第一點連接


圖形會因為角度而改變


將angle2弧度加入滑鼠座標X

圖形跟著旋轉


將圖形圓心跟著滑鼠x,y座標移動


將弧度改為frameCount變自動旋轉

frameCount=每秒60frame

所以轉完一圈需要6秒

60*6=360


簡易的接水果程式


水果變多 就要用矩陣來處理



2020年10月28日 星期三

🗿Week07 (期中作業)



用畫出圓點



size(500,500);
for(int angle=0;angle<360;angle+=30){
  float angle2 = radians(angle); ///弧度
  float x = 100+cos(angle2)*50;
  float y = 100+sin(angle2)*50;
  ellipse(x,y,2,2); //劃出點 大小(2,2)
} 



利用三角函數畫三角形


程式碼:
size(500,500);
beginShape();
for(int angle=0;angle<360;angle+=120){ ///加120度為三角形
  float angle2 = radians(angle);
  float x = 100+cos(angle2)*50;
  float y = 100+sin(angle2)*50;
  vertex(x,y); ///點
}
endShape(CLOSE);


滑鼠旋轉游標,三角形跟著轉


程式碼:
void setup(){
  size(500,500);
}
void draw(){
  //background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+mouseX);
    float x = 100+cos(angle2)*50;
    float y = 100+sin(angle2)*50;
    vertex(x,y);
  }
  endShape(CLOSE);
}


三角形跟著滑鼠移動


程式碼:
void setup(){
  size(500,500);
}
void draw(){
  ///background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+mouseX);
    float x = mouseX+cos(angle2)*50;
    float y = mouseY+sin(angle2)*50;
    vertex(x,y);
  }
  endShape(CLOSE);
}


三角形自己旋轉,滑鼠可以移動它


*1sec = 60frame
程式碼:
void setup(){
  size(500,500);
}
void draw(){
  ///background(255);//清畫面
  beginShape();
  for(int angle=0;angle<360;angle+=120){
    float angle2 = radians(angle+frameCount); ///frameCount=螢幕每秒會跑60次
    float x = mouseX+cos(angle2)*100;
    float y = mouseY+sin(angle2)*100;
    vertex(x,y);
  }
  endShape(CLOSE);
}


接水果遊戲


程式碼:
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,80,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);///沒接住,水果重生
      }
    }
  }
}

_______________________________________________________________________

PImage pic;
PImage car;
PImage bg;
PImage die;
float [] picX=new float[10];
float [] picY=new float[10];
float carX=150, carY=450;
int score=0;

void setup() {
  size(513, 615);
  for (int i=0; i<10; i++) {
    picX[i] = random(70, 295);
    picY[i] = -i*100;
    picY[i]--;
  }
  pic = loadImage("pic.png");///三角椎
  car = loadImage("car.png");
  bg = loadImage("bg.png");
  die =loadImage("die.png");
}

void draw() {
  image(bg, 0, 0, 513, 615);
  //background(255);
  image(car, carX, carY, 100, 100);
  carX=mouseX;

  for (int i=0; i<7; i++) {
    image(pic, picX[i], picY[i], 150, 170);
    picY[i]+=1;
    /*if(picY[i]>carY){///三角錐掉夠低
     if(carX<picX[i] && picX[i]<carX+80){///接到三角錐
     score+=10;///接住了就扣分
     picY[i]=0;  picX[i]=random(70,455);///三角錐重生
     }else{
     picY[i]=0; picX[i]=random(70,455);///沒接住,三角錐重生
     }
     }
     */
    if (picY[i]>615)
    {
      picY[i]=-183;  
      picX[i]=random(70, 295);///三角錐重生
    }
    if (picY[i]>carY) {
      if (carX<picX[i] && picX[i]<carX+100) {///車碰到三角錐
        image(die, 0, 0, 513, 615);
      }
    }
  }
}














PImage pic;
PImage car;
PImage bg;
PImage die;
PImage heart;
float [] picX=new float[10];
float [] picY=new float[10];
float carX=150, carY=450;
int score=50;
int h=0;

void setup() {

  size(513, 615);
  for (int i=0; i<10; i++) {
    picX[i] = random(70, 295);
    picY[i] = -i*100;
  }
  pic = loadImage("pic.png");///三角椎
  car = loadImage("car.png");
  bg = loadImage("bg.png");
  die =loadImage("die.png");
}

void draw() {
  if (h==0) {
    image(bg, 0, 0, 513, 615);
    //background(255);
    carX=mouseX-47;
    image(car, carX, carY, 50, 100);



    for (int i=0; i<7; i++) {
      image(pic, picX[i], picY[i], 60, 60);
      picY[i]+=2;
      if (picY[i]>615)
      {
        picY[i]=-183;  
        picX[i]=random(70, 295);///三角錐重生
      }
      if (picY[i]+60>carY) {
        if (carX<picX[i]+58 && picX[i]<carX+48) //2cm
        {///車碰到三角錐
          score-=10;
         picY[i]=-150;
        }
      }
    }
    textSize(50);
    text(score,50, 100);
  }
  if (score==0)
  {
    h=1;
    image(die, -35, 100, 600, 350);
  }
}
void keyPressed() {
  if (keyCode == ENTER)
  {
    h=0;
    score=50;
  }
}

______________________________________________

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);
    }  
  }
  }
   
}

執行結果: