2020年3月17日 星期二

養了一隻小龜叫Oreo__week02

課堂一開始,老師請我們先完成Zuvio的問卷,目的在於了解我們的學習狀態,以及複習上周的課程進度。


老師很認真的講解及分享每個項目之後,進入本週的進度課程––利用Processing寫出「隕石往下掉」的程式。
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
首先,我們會先寫出一個小畫家(上週進度)。
程式碼如下:

void setup(){  //設定

  size(600,400); //畫布大小
}
void draw(){  //畫圖
 if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY); //滑鼠按下時,線跟著滑鼠的軌跡。
}


再來我們修改一下小畫家,讓線變成點。


程式碼如下:

int x=0,y=0;  //宣告兩個變數,x,y
void setup(){ 
  size(600,400);
}
void draw(){
 if(mousePressed){
   x=mouseX; //x是滑鼠座標X
   y=mouseY; //y是滑鼠座標Y
   circle(x,y,10); //點的座標為(x,y)大小為10
 } 
}

再進化,讓點可以自動往下墜落。


程式碼如下:

int x=0,y=0;
void setup(){ 
  size(600,400);
}
void draw(){
  background(47,79,79); //讓每張圖都先蓋上背景,可以消除圓點留下的軌跡
  circle(x,y,10);
  y++; //圓點落下的速度,欲加速可改成y+=2、y+=3...
 if(mousePressed){
   x=mouseX;
   y=mouseY;
 } 
}

再做得更完整一點!讓掉下來的隕石不要消失!



程式碼如下:

int []x={0,0,0,0,0,0,0,0,0,0}; //陣列,java寫法和C語言有些許不同!
int []y={0,0,0,0,0,0,0,0,0,0}; //java : []x={};   C : x[]={};
int n=0; //隕石的數量
void setup(){ 
  size(600,400);
}
void draw(){
  background(47,79,79);
  for(int i=0;i<n;i++){  //利用for迴圈,讓上一顆隕石不會消失
    circle(x[i],y[i],30);
    y[i]+=3;
    if(y[i]>=400-15) y[i]=400-15;  //讓隕石能停留在地表上 (要扣掉半徑,因為座標會在圓心)
  }
}
void mousePressed(){
  if(n<=30){
   x[n]=mouseX;
   y[n]=mouseY;
   n++;  //隕石越來越多顆
  }
}

也可以把點改成圖檔,換成可愛的隕石!




程式碼一樣放下面:

int []x={0,0,0,0,0,0,0,0,0,0};
int []y={0,0,0,0,0,0,0,0,0,0};
int n=0;
PImage img;  //宣告一張圖
void setup(){ 
  size(600,400);
  img=loadImage("01.png"); //讀入一張圖(圖要事先放在data裡)
}
void draw(){
  background(47,79,79);
  for(int i=0;i<n;i++){
    image(img,x[i],y[i],100,100);
    y[i]+=3;
    if(y[i]>=400-75) y[i]=400-75; //自行調整,讓圖能停在最下面即可
  }
}
void mousePressed(){
  if(n<=30){
   x[n]=mouseX;
   y[n]=mouseY;
   n++;
  }
}

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

課程結束。

沒有留言:

張貼留言