作業一: 憤怒鳥
程式教學新增目標物豬的數量,並分成多個物件。
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;
}
沒有留言:
張貼留言