2019年10月17日 星期四

Week06_Summer

 今日目標:

*聲音
*氣球上升+氣球破掉





 01 載入 Sound 函式庫,寫出可撥放音樂的程式


 基本寫法:

import processing.sound.*;
SoundFile player;
void setup(){
  player = new SoundFile(this,"moi.mp3");
  player.play();
}

 點擊播放音檔的寫法:

import processing.sound.*;
SoundFile wavBB;
void setup(){
  wavBB = new SoundFile(this, "Wate.wav");
}
void mousePressed(){
  wavBB.play();
}

 02 點擊滑鼠時,製造出氣球,並往上升



 氣球上升:

PImage imgBalloon;
float []balloonX=new float[200];
float []balloonY=new float[200];
float []balloonSize=new float[200];
int nowN=0;
void setup(){
  size(600,400);
  imgBalloon = loadImage("balloon.png");
}
void draw(){
  background(255);
  for(int i=0 ; i<nowN ; i++){
    image(imgBalloon,balloonX[i],balloonY[i],balloonSize[i],balloonSize[i]/2*3);
    if(balloonY[i]>0) balloonY[i]--;
  }
}
void mousePressed(){
 balloonSize[nowN]=100;
 balloonX[nowN]=mouseX-balloonSize[nowN]/2;
 balloonY[nowN]=mouseY-balloonSize[nowN]/2*3;
 nowN++;
}




 03  點擊滑鼠,製造出不同大小的氣球



 程式碼:

PImage imgBalloon;
float []balloonX=new float[200];
float []balloonY=new float[200];
float []balloonSize=new float[200];
int nowN=0;
void setup(){
  size(600,400);
  imgBalloon = loadImage("balloon.png");
}
void draw(){
  background(255);
  for(int i=0 ; i<nowN ; i++){
    image(imgBalloon,balloonX[i],balloonY[i],balloonSize[i],balloonSize[i]/2*3);
    if(balloonY[i]>0) balloonY[i]--;
  }
  if(mousePressed) setBalloon(balloonSize[nowN-1]*1.02,nowN-1);
}
void setBalloon(float size,int i){
 balloonSize[i]=size;
 balloonX[i]=mouseX-balloonSize[i]/2;
 balloonY[i]=mouseY-balloonSize[i]/2*3;
}
void mousePressed(){
 setBalloon(10,nowN);
 nowN++;
}




 04 完成吹氣 & 爆破聲


 完整程式碼:

PImage imgBalloon;
import processing.sound.*;
SoundFile wavBB;
SoundFile wavBoom;
float []balloonX=new float[200];
float []balloonY=new float[200];
float []balloonSize=new float[200];
int nowN=0;
void setup(){
  size(600,400);
  imgBalloon = loadImage("balloon.png");
  wavBB = new SoundFile(this, "Wate.wav");
  wavBoom = new SoundFile(this, "boom.wav");
}
void draw(){
  background(255);
  for(int i=0 ; i<nowN ; i++){
    image(imgBalloon,balloonX[i],balloonY[i],balloonSize[i],balloonSize[i]/2*3);
    if(balloonY[i]>0) balloonY[i]--;
  }
  if(mousePressed) setBalloon(balloonSize[nowN-1]*1.02,nowN-1);
}
void setBalloon(float size,int i){
 balloonSize[i]=size;
 balloonX[i]=mouseX-balloonSize[i]/2;
 balloonY[i]=mouseY-balloonSize[i]/2*3;
}
void mousePressed(){
 if(mouseButton==LEFT){
   setBalloon(10,nowN);
   nowN++;
   wavBB.play();
 }
 else if(mouseButton==RIGHT){
   for(int i=0;i<nowN;i++){
     if(balloonX[i]<mouseX && mouseX<balloonX[i]+balloonSize[i] &&
         balloonY[i]<mouseY &&mouseY<balloonY[i]+balloonSize[i]/2*3){
      setBalloon(0,i); 
      wavBoom.play();
   }
  }
 }
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...