2017年10月1日 星期日

Week03 呂汶佶

一 憤怒鳥

PImage imgBird, imgPig;   //讀圖檔
void setup(){
  size(800,600);   //視窗大小
  imgBird=loadImage("bird.png");  // 鳥的圖檔
  imgPig=loadImage("pig.png");   //豬的圖檔
}
float birdVX=0,birdVY=0;   //鳥的速度設定
float birdX=400,birdY=300;   //鳥的圖檔位置
void draw(){
    background(255);   //背景顏色
    image(imgPig,400,300,50,50);      // 豬的位址及大小
    image(imgBird,birdX,birdY,55,55);     // 鳥的位址及大小
    line(birdX,birdY,400,300);     //輔助線
    birdX +=birdVX;      //鳥的X位置+鳥的速度
    birdY +=birdVY;      //鳥的Y位置+鳥的速度
}
void mouseDragged(){ 
  birdX=mouseX;         //鳥的X位置移動到滑鼠的X位置
  birdY=mouseY;        //鳥的Y位置移動到滑鼠的Y位置
}
void mouseReleased(){ 
  birdVX=(400-mouseX)/100.0;     // 鳥的X速度
  birdVY=(300-mouseY)/100.0;     //鳥的Y速度
}







PImage imgBird, imgPig;
void setup(){
  size(800,600);
  imgBird=loadImage("bird.png");
  imgPig=loadImage("pig.png");
  imageMode(CENTER);    //上圖的線會在圖片的左上角,為了更方便理解必須將線放在圖的中間
}
float birdVX=0,birdVY=0;
float birdX=400,birdY=300;
float pigX=700,pigY=100;
float birdAX=0,birdAY=0;
boolean pigAlive=true;     // 判斷圖片是否存在
void draw(){
    background(255);
    if(pigAlive) image(imgPig,pigX,pigY,50,50);
    image(imgBird,birdX,birdY,55,55);
    if(dist(pigX,pigY,birdX,birdY)<100){
      pigAlive=false;     // 豬和鳥的位置<100,豬會消失
    }
    line(birdX,birdY,400,300);
    birdX +=birdVX;
    birdY +=birdVY;
    if(birdX<27.5){birdX=27.5; birdVX=-birdVX;}   //地圖X左邊邊界和鳥圖片的一半大小
    if(birdX>width-27.5){birdX=width-27.5;birdVX=-birdVX;}   //地圖X右邊邊界和鳥的圖片一半大小
    if(birdY<27.5){birdY=27.5;birdVY=-birdVY;}          //地圖Y上面邊界和鳥圖片的一半大小
    if(birdY>height-27.5){birdY=height-27.5;birdVY=-birdVY;}     //地圖Y下面邊界和鳥圖片的一半大小
    birdVX +=birdAX;
    birdVY +=birdAY;
    birdVX*=0.997;    //鳥的X速度空氣阻力
    birdVY*=0.997;    //鳥的Y速度空氣阻力
}
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;   //鳥的Y加速度(相當於重力加速度)
}



二 小朋友下樓梯


//小朋友遇到方塊牆不會往下墜
void setup(){
  size(600,500);
}
int boardX=227,boardY=400;
int kidX=300,kidY=250;
void draw(){
  background(0);
  rect(boardX,boardY,200,50);
  rect(kidX,kidY,50,50);
  if(kidX>boardX-50 && kidX<boardX+200 && kidY>boardY-50){
  }
  else kidY++;

}

沒有留言:

張貼留言