2020年5月27日 星期三

week 13

今天上課時一樣繼續製作憤怒鳥的小遊戲。
在遊戲一開始,我們先匯入憤怒鳥的圖片,畫出一隻憤怒鳥!!

PImage imgBird;
void setup()
{
  size (500,400);
  imgBird=loadImage("bird.png");
  imageMode(CENTER);//以正中心當座標
}//圖檔如果沒有放好,會當掉potinter
void draw()
{
  background (255);//清背景
  image(imgBird,mouseX,mouseY,100,100);
}

*缺失:鳥無法一直動,要等mousePressed之後才可以跟著動

程式碼完成後~
噹噹! 一隻可愛的憤怒鳥出現囉!!



憤怒鳥出現後,接著,這個遊戲內我們需要用一條線去顯現出憤怒鳥拉的方向。
所以下一個步驟,開始畫線吧!!

PImage imgBird;
void setup()
{
  size (500,400);
  imgBird=loadImage("bird.png");
  imageMode(CENTER);//以正中心當坐標
}//圖檔如果沒有放好,會當掉pointer
float birdX=100,birdY=300,oldX,oldY;之前的鳥在哪裡
void draw()
{
  background (255);//清背景
  image(imgBird,mouseX,mouseY,100,100);
  if (mousePressed) line (birdX,birdY,oldX,oldY);
}
void mousePressed()
{//按下去,才會開始動
 oldX=birdX;oldY=birdY;
}
void mouseDragged()
{//按下去,才會開始動
  birdX=mouseX;
  birdY=mouseY;
}



一條線就這樣愉快的出來了!!!

有了線也有了憤怒鳥,那就只差最後一個步驟囉!!
我們要讓憤怒鳥咻一下彈出去~~~


PImage imgBird;
void setup()
{
     size(500,400);
    imgBird=loadImage("bird.png");
     imageMode(CENTER);
}
float birdX=100,birdY=300,oldX,oldY,vx=0,vy=0;之前的鳥在哪裡
boolean bMoving=false;//if(判斷) ex.if(bMoving)...
void draw()
{
  background (255);//清背景
  image(imgBird,mouseX,mouseY,100,100);//不能一直跟著mouse動,改用birdX,birdY

  if(bMoving) line(birdX,birdY,oldX,oldY);//有按到,才能動它
  birdX+=vx;bird+=vy;//鳥要照速度去飛!!
  if(birdX>450||birdX<50)vx=-vx*0.95;//撞到邊界會改變方向,改變為相反的方向
  if(birdY>350||birdY<50)vy=-vy*0.95;
}

void mouseReleased()
{
  if(bMoving){
   bMoving=false;//放開時,就不能動了
  vx=(oldX-mouseX)/10;//0.1倍
  vx=(oldX-mouseX)/10;
}
}void mousePressed()
{//按下去,才會開始動
 if(dist(mouseX,mouseY,birdX,birdY)<50){
 oldX=birdX;oldY=birdY;

 bMoving=true;//按下去時,如果有按到,才能動它
 }

}

void mouseDragged()
{//按下去,才會開
始動

if(bMoving){//有按到,才能動它
  birdX=mouseX;
  birdY=mouseY;
}
}



經過這些繁雜的程式碼後~
憤怒鳥終於可以如遊戲一般發射且飛射出去囉~!!






今天延續著上週的憤怒鳥遊戲,這週學的是如何畫出拉憤怒鳥時的那條線及將憤怒鳥發射出去,經過了一番努力後終於完成了!!也對寫遊戲更加有信心了~!!

沒有留言:

張貼留言