2017年10月2日 星期一

Week04 芷萱的課堂筆記

一、改良angrybird憤怒鳥遊戲

*讓Pig出現好幾隻,且每隻都有一條命


*程式碼(增加陣列)

PImage imgBird, imgPig;
float birdX = 400, birdY = 300;
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);
  imgBird=loadImage("bird.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;
    }
  }
}
void draw(){
  background(255);
  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);
      }  
  }
  image(imgBird, birdX, birdY, 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(birdY<50) { birdY=50;  birdVY = -birdVY; }
  if(birdY>height-50) { birdY=height-50;  birdVY= -birdVY; }
  
  birdVX += birdAX;
  birdVY += birdAY;
  birdVX *= 0.995;
  birdVY *= 0.995;
}
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;

}

*重新作一個陣列


*讓圓圈上不同的顏色


*改寫座標,讓畫面比較乾淨


*讓粉紅球的座標也用變數來作


*程式碼

float birdX = 100, birdY = 400;
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(#1CFFD3); ellipse(700-i*100,100+j*100,100,100);
      fill(#1CFFD3); ellipse(pigx[i][j],pigy[i][j],100,100);
    }
  }
  //fill(#FF89B6); ellipse(400,300,100,100);
  fill(#FF89B6); ellipse(birdX,birdY,100,100);
}

*加入牛頓第一運動&牛頓第二運動定律


*程式碼

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(pigx[i][j], pigy[i][j], birdX, birdY)<100){
          pigAlive[i][j]=false;
        }
        if(pigAlive[i][j]){
          //fill(#1CFFD3); ellipse(700-i*100,100+j*100,100,100);
          fill(#1CFFD3); ellipse(pigx[i][j],pigy[i][j],100,100);
        }
    }
  }
  //fill(#FF89B6); ellipse(400,300,100,100);
  fill(#FF89B6); ellipse(birdX,birdY,100,100);
  
  birdX += birdVX;
  birdY += birdVY;
  birdVX += birdAX;
  birdVY += birdAY;

}

*程式碼(接下來加入直線運動和拋物線運動且要清空birdVX birdAX)

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(pigx[i][j], pigy[i][j], birdX, birdY)<100){
          pigAlive[i][j]=false;
        }
        if(pigAlive[i][j]){
          //fill(#1CFFD3); ellipse(700-i*100,100+j*100,100,100);
          fill(#1CFFD3); ellipse(pigx[i][j],pigy[i][j],100,100);
        }
     }
  }
  //fill(#FF89B6); ellipse(400,300,100,100);
  fill(#FF89B6); ellipse(birdX,birdY,100,100);
  
  birdX += birdVX;
  birdY += birdVY;
  birdVX += birdAX;
  birdVY += birdAY;

}
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;

}

*放音樂



*程式碼

import ddf.minim.*;

Minim minim;
AudioPlayer player;

void setup(){
  size(800,600);
  minim=new Minim(this);
  player=minim.loadFile("Lulu.mp3",2048);
  player.play();
  player.loop();

}
void draw(){

}

沒有留言:

張貼留言