2017年9月30日 星期六

Week03 中澤的網誌

Week03 中澤的學習網誌


一、製作Angry Bird 小遊戲






二、修正小鳥位置 將其加入滑鼠正中心

imageMode(CENTER);




三、加入重力加速度

程式碼:

PImage imgBird, imgPig;
void setup(){
  size(800,600);
  imgBird=loadImage("bird.png");
  imgPig=loadImage("ppig.png");
  imageMode(CENTER);  //將小鳥圖放到滑鼠正中央
}
float birdX = 400, birdY = 300; //小鳥位置
float birdVX = 0, birdVY = 0; //小鳥初速度
float birdAX =0, birdAY = 0; //小鳥加速度
void draw(){
  background(255); //將殘影刪除
  image(imgPig, 400, 300, 100, 100); //(圖片, X位置, Y位置, 寬, 長)
  image(imgBird, birdX, birdY, 100, 100);
  line(birdX, birdY, 400,300); //劃線
  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;//Y值的重力加速度
}

四、當小鳥碰到豬的時候豬消失

程式碼:

PImage imgBird, imgPig;
void setup(){
  size(800,600);
  imgBird=loadImage("bird.png");
  imgPig=loadImage("ppig.png");
  imageMode(CENTER);
}
float birdX = 400, birdY = 300;
float birdVX = 0, birdVY = 0;
float birdAX =0, birdAY = 0;
float pigx=700, pigy=100;
boolean pigAlive=true;
void draw(){
  background(255);
  if(pigAlive) image(imgPig, pigx, pigy, 100, 100);
  image(imgBird, birdX, birdY, 100, 100);
  if (dist(pigx, pigy, birdX, birdY)<100){
    pigAlive=false;
  }
  line(birdX, birdY, 400,300);
  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;

}



五、讓小鳥不會跑出邊界

程式碼:


PImage imgBird, imgPig;
void setup(){
  size(800,600);
  imgBird=loadImage("bird.png");
  imgPig=loadImage("ppig.png");
  imageMode(CENTER);
}
float birdX = 400, birdY = 300;
float birdVX = 0, birdVY = 0;
float birdAX =0, birdAY = 0;
float pigx=700, pigy=100;
boolean pigAlive=true;
void draw(){
  background(255);
  if(pigAlive) image(imgPig, pigx, pigy, 100, 100);
  image(imgBird, birdX, birdY, 100, 100);
  if (dist(pigx, pigy, birdX, birdY)<100){
    pigAlive=false;
  }
  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;
}


六、小朋友下樓梯

程式碼:
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++;
 
 kidX=mouseX;
}







沒有留言:

張貼留言