2020年6月2日 星期二

孤獨月宮的花園

200529  week14

今天前兩節我們在為程設會考做準備~並且隨堂考試(10題)


玩電玩學程式~angry birds(續集)


先練習放個音樂
跟著步驟一起吧!

Sketch>Import Library...>Add Library>搜尋sound>點選Minim那個>下載(Install)

File>Examples...>點最長那個中的Minim>Basic>PlayFile


就會跑出好多程式碼 像這張圖  ↓↓↓↓↓↓













只要按任意鍵,音樂就會開始播放!!!













用上面的程式碼進行改變(複製程式碼,簡單又快速)

import ddf.minim.*;//使用外掛
Minim minim;//物件minim
AudioPlayer player;//物件 player

void setup()
{
    minim = new Minim(this);
    player = minim.loadFile("song.mp3");
    player.play();//真的播放
}
void draw()///如果沒有draw,就沒有後續的動作,就不會有聲音
{

}














上週程式碼,加入能播放音樂的幾行程式
   
PImage imgBird;
void setup(){
  size(500,400);
  imgBird=loadImage("bird.png");//圖檔如果沒有放好,會當掉 pointer
  imageMode(CENTER);//以正中心,當座標
}
float birdX=100, birdY=300, oldX, oldY, vx=0, vy=0;//之前的鳥在哪裡
boolean bMoving=false;//if(判斷) ex. if(bMoving)...
void draw(){
  background(255);//清背景
  image(imgBird, birdX,birdY,100,100);//不能一直跟著mouse動,改用birdX,birdY
  if(bMoving) line(birdX,birdY, oldX,oldY);//有按到,才能動它
  birdX+=vx; birdY+=vy;//鳥要照速度去飛!!!
  if(birdX>450 || birdX<50) vx = -vx*0.95;//撞到邊界,會改變方向,相反的方向
  if(birdY>350 || birdY<50) vy = -vy*0.95;//撞到邊界,會改變方向,相反的方向
}
void mouseReleased(){
  if(bMoving){
    bMoving=false;//放開時,就不能動了
    vx=(oldX-mouseX)/10; vy=(oldY-mouseY)/10;// 0.1倍
  }
}
void mousePressed(){//按下去,才會開始動
  if( dist(mouseX,mouseY, birdX,birdY)<50){
    oldX=birdX; oldY=birdY;
    bMoving=true;///按下去時,如果有按到,才能動它
  }
}
void mouseDragged(){//按下去,才會開始動
  if(bMoving) {//有按到,才能動它
    birdX=mouseX; birdY=mouseY;
  }


}
在前三行以及中間三行加入播放音樂的程式碼(藍色部分)
import ddf.minim.*; //TODO:music
Minim minim; //TODO:music
AudioPlayer player; //TODO:music
PImage imgBird;
void setup(){
  size(500,400);
  imgBird=loadImage("bird.png");///圖檔如果沒放好,會當掉
  imageMode(CENTER);///以正中心,當座標
   minim = new Minim(this);//TODO:music
   player = minim.loadFile("song.mp3");//TODO:music
   player.play();//TODO:music
}
float birdX=100, birdY=300, oldX, oldY, vx=0, vy=0;
boolean bMoving=false;
void draw(){
  background(255);
  image(imgBird, birdX,birdY,100,100);//不能一直跟著mouse動,改用birdX,birdY
  if(bMoving) line(birdX,birdY, oldX,oldY);//有按到,才能動它
  birdX+=vx; birdY+=vy;//鳥要照速度去飛!!!
  if(birdX>450 || birdX<50) vx = -vx*0.95;//撞到邊界,會改變方向,相反的方向
  if(birdY>350 || birdY<50) vy = -vy*0.95;//撞到邊界,會改變方向,相反的方向
}
void mouseReleased(){
  if(bMoving){
    bMoving=false;//放開時,就不能動了
    vx=(oldX-mouseX)/10; vy=(oldY-mouseY)/10;// 0.1倍
  }
}
void mousePressed(){//按下去,才會開始動
  if( dist(mouseX,mouseY, birdX,birdY)<50){
    oldX=birdX; oldY=birdY;
    bMoving=true;///按下去時,如果有按到,才能動它
  }
}
void mouseDragged(){//按下去,才會開始動
  if(bMoving) {//有按到,才能動它
    birdX=mouseX; birdY=mouseY;
  }
}


下集預告~加入Pig(藍色部分)

import ddf.minim.*;//TODO: Music
Minim minim;//TODO: Music
AudioPlayer player;//TODO: Music
PImage imgBird, imgPig;//TODO2:
float [] pigX=new float[20];//TODO2:
float [] pigY=new float[20];//TODO2:
int pigN=0;//TODO2: 豬有0隻
void setup(){
  size(500,400);
  imgBird=loadImage("bird.png");//圖檔如果沒有放好,會當掉 pointer
  imgPig=loadImage("pig.gif");//TODO2
  
  imageMode(CENTER);//以正中心,當座標
  minim = new Minim(this);//TODO: Music
  player = minim.loadFile("song.mp3");//TODO: Music
  player.play();//TODO: Music
}
float birdX=100, birdY=300, oldX, oldY, vx=0, vy=0;//之前的鳥在哪裡
boolean bMoving=false;//if(判斷) ex. if(bMoving)...
void draw(){
  background(255);//清背景
  for(int i=0; i<pigN; i++){//TODO2
    image(imgPig, pigX[i], pigY[i], 100,100);//TODO2
  }
  
  image(imgBird, birdX,birdY,100,100);//不能一直跟著mouse動,改用birdX,birdY
  if(bMoving) line(birdX,birdY, oldX,oldY);//有按到,才能動它
  birdX+=vx; birdY+=vy;//鳥要照速度去飛!!!
  if(birdX>450 || birdX<50) vx = -vx*0.95;//撞到邊界,會改變方向,相反的方向
  if(birdY>350 || birdY<50) vy = -vy*0.95;//撞到邊界,會改變方向,相反的方向
}
void mouseReleased(){
  if(bMoving){
    bMoving=false;//放開時,就不能動了
    vx=(oldX-mouseX)/10; vy=(oldY-mouseY)/10;// 0.1倍
  }
}
void mousePressed(){//按下去,才會開始動
  if( mouseButton==RIGHT){//TODO2
    pigX[pigN]=mouseX; pigY[pigN]=mouseY;//TODO2
    pigN++;//TODO2
  }
  if( dist(mouseX,mouseY, birdX,birdY)<50){
    oldX=birdX; oldY=birdY;
    bMoving=true;///按下去時,如果有按到,才能動它
  }
}
void mouseDragged(){//按下去,才會開始動
  if(bMoving) {//有按到,才能動它
    birdX=mouseX; birdY=mouseY;
  }
}


心得:下週就能夠完成整個angry birds遊戲!
   真期待呢!!!






沒有留言:

張貼留言