2017年10月2日 星期一

Week04_一個上課筆記

作業一: 憤怒鳥

程式教學
新增目標物豬的數量,並分成多個物件。
PImage imgBird,imgPig;
void setup(){
  size(800,600);
  imgBird=loadImage("angryBird.png");
  imgPig=loadImage("pig.png");
  imageMode(CENTER);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigX[i][j]=700-i*100;  pigY[i][j]=100+j*100;  pigAlive[i][j]=true;
    }
  }    //  射擊物小豬的位置
}
float birdX=400,birdY=300;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
//float pigX=700,pigY=100;
//boolean pigAlive=true;
float [][]pigX=new float[5][4];   
float [][]pigY=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];    //  射擊物小豬分成多個物件
void draw(){
  background(255);
  image(imgBird,birdX,birdY,100,100);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      if(dist(pigX[i][j],pigY[i][j], birdX,birdY)<100){
         pigAlive[i][j]=false;       }
      if(pigAlive[i][j])  image(imgPig,pigX[i][j],pigY[i][j],100,100);
    }
  }     //   多個小豬物件當被憤怒鳥觸碰到時會消失
 
  line(birdX,birdY,400,300);
  birdX+=birdVX;    birdY+=birdVY;
  if(birdX<50) {birdX=50; birdVX=-birdVX;}
  if(birdX>width-50) {birdX=width-50; birdVX=-birdVX;}
  if(birdX<50) {birdY=50; birdVY=-birdVY;}
  if(birdY>height-50) {birdY=height-50; birdVY=-birdVY;}
  birdVX+=birdAX;    birdVY+=birdAY;
  birdVX*=0.997;     birdVY*=0.997;
}
void mouseDragged(){
   birdX=mouseX;  birdY=mouseY;
   birdVX=birdVY=birdAX=birdAY=0;
}
void mouseReleased(){
   birdVX=(400-mouseX)/10.0;
   birdVY=(300-mouseY)/10.0;
   birdAY=0.98;
}





作業二 : 增加音效

第一步
1. 先在軟體裡下載Sound


2. 可以確認是否下載





2. 拉入音樂檔 ( 和圖檔一樣 )
3. 輸入程式
import processing.sound.*;
SoundFile sound;
void setup(){
  sound=new SoundFile(this,"Golly_Gee.mp3");
  sound.play();
  sound.loop();
}





最終成果程式 ( 加入音樂的憤怒鳥小遊戲 )

PImage imgBird,imgPig;
import processing.sound.*;
SoundFile sound;
void setup(){
  size(800,600);
  sound=new SoundFile(this,"Golly_Gee.mp3");
  sound.play();
  sound.loop();
  imgBird=loadImage("angryBird.png");
  imgPig=loadImage("pig.png");
  imageMode(CENTER);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigX[i][j]=700-i*100;  pigY[i][j]=100+j*100;  pigAlive[i][j]=true;
    }
  }
}
float birdX=100,birdY=400;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
//float pigX=700,pigY=100;
//boolean pigAlive=true;
float [][]pigX=new float[5][4];
float [][]pigY=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void draw(){
  background(255);
  image(imgBird,birdX,birdY,100,100);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      if(dist(pigX[i][j],pigY[i][j], birdX,birdY)<100){
         pigAlive[i][j]=false;       }
      if(pigAlive[i][j])  image(imgPig,pigX[i][j],pigY[i][j],100,100);
    }
  }
   
  line(birdX,birdY,400,300);
  birdX+=birdVX;    birdY+=birdVY;
  if(birdX<50) {birdX=50; birdVX=-birdVX;}
  if(birdX>width-50) {birdX=width-50; birdVX=-birdVX;}
  if(birdX<50) {birdY=50; birdVY=-birdVY;}
  if(birdY>height-50) {birdY=height-50; birdVY=-birdVY;}
  birdVX+=birdAX;    birdVY+=birdAY;
  birdVX*=0.997;     birdVY*=0.997;
}
void mouseDragged(){
   birdX=mouseX;  birdY=mouseY;
   birdVX=birdVY=birdAX=birdAY=0;
}
void mouseReleased(){
   birdVX=(400-mouseX)/10.0;
   birdVY=(300-mouseY)/10.0;
   birdAY=0.98;
}


沒有留言:

張貼留言