一、射擊遊戲
1.陣列宣告(畫圖)
float [][]pigx=new float[5][4];float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
size(800,600);
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;
}
}
}
void draw(){
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100); //上色
}
}
fill(#DE0719); ellipse(400,300,100,100); //上色
}
2.碰到怪物後怪物消失
寫好牛頓第一運動定律和牛頓第二運動定律。然後讓pig 碰到 bird時, 給它死。沒死的才畫出來
float birdX=100,birdY=400;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
size(800,600);
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;
}
}
}
void draw(){
background(255); //背景顏色
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
if( dist(birdX,birdY,pigx[i][j],pigy[i][j])<100) pigAlive[i][j]=false;
//fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
if(pigAlive[i][j]) {fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);}
}
}
//fill(#DE0719); ellipse(400,300,100,100);
fill(#DE0719); ellipse(birdX,birdY,100,100);//draw the angry bird
birdX+=birdVX;birdY+=birdVY;//update the angry bird
birdVX+=birdAX;birdVY+=birdAY;
}
void mouseDragged(){
birdX=mouseX;birdY=mouseY;
}
3.發射子彈
做出 (1) 直線運動, (2) 拋物線
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
size(800,600);
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;
}
}
}
void draw(){
background(255);
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
if( dist(birdX,birdY,pigx[i][j],pigy[i][j])<100) pigAlive[i][j]=false;
//fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
if(pigAlive[i][j]) {fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);}
}
}
//fill(#DE0719); ellipse(400,300,100,100);
fill(#DE0719); ellipse(birdX,birdY,100,100);//draw the angry bird
birdX+=birdVX;birdY+=birdVY;//update the angry bird
birdVX+=birdAX;birdVY+=birdAY;
}
void mouseDragged(){
birdX=mouseX;birdY=mouseY;
birdVX=0;birdVY=0;
}
void mouseReleased(){
//birdVX=(100-mouseX)/20.0; birdVY=(400-mouseY)/20.0; //線性運動
birdVX=(100-mouseX)/5.0; birdVY=(400-mouseY)/5.0; birdAY=0.98; //拋物線
}
4.忘了清 birdAY 加速度,可能會造成 自由落體, 所以 mouseDragged時要清空birdAY
float birdX=100,birdY=400;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
size(800,600);
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;
}
}
}
void draw(){
background(255);
for(int i=0;i<5;i++){
for(int j=0;j<4;j++){
if( dist(birdX,birdY,pigx[i][j],pigy[i][j])<100) pigAlive[i][j]=false;
//fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);
if(pigAlive[i][j]) {fill(#07DE0F); ellipse(pigx[i][j],pigy[i][j],100,100);}
}
}
//fill(#DE0719); ellipse(400,300,100,100);
fill(#DE0719); ellipse(birdX,birdY,100,100);//draw the angry bird
birdX+=birdVX;birdY+=birdVY;//update the angry bird
birdVX+=birdAX;birdVY+=birdAY;
}
void mouseDragged(){
birdX=mouseX;birdY=mouseY;
birdVX=0;birdVY=0;
birdAY=0;
}
void mouseReleased(){
//birdVX=(100-mouseX)/20.0; birdVY=(400-mouseY)/20.0; //shi-hsien-yun-dong
birdVX=(100-mouseX)/5.0; birdVY=(400-mouseY)/5.0; birdAY=0.98; //pao-wu-hsien
}
二、放音樂
sound文件庫
SoundFile sound;
void setup(){
size(800,600);
sound=new SoundFile(this,"fish.mp3");
sound.play();
sound.loop();
}
minim文件庫
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
size(800,600);
minim=new Minim(this);
player=minim.loadFile("fish.mp3",2048);
player.play();
//player.loop();
}
void draw(){
}
沒有留言:
張貼留言