2020年5月29日 星期五

憤怒鳥-豬豬現身

import ddf.minim.*;
Minim minim;
AudioPlayer player;
AudioPlayer player2;
PImage imgBird, imgPig;
void setup(){
  size(500,400);
  minim=new Minim(this);
  player=minim.loadFile("song.mp3");
  player.play();
  player2=minim.loadFile("pig.wav");

  imgBird=loadImage("bird.png");//圖檔如果沒有放好,會當掉 pointer
  imgPig=loadImage("pig.gif");//我們的豬
  imageMode(CENTER);//以正中心,當座標
}
float []pigX=new float[20];
float []pigY=new float[20];
int pigN=0;//有幾隻豬
float birdX=100, birdY=300, oldX, oldY, vx=0, vy=0;//之前的鳥在哪裡
boolean bMoving=false;//if(判斷) ex. if(bMoving)...
void draw(){
  background(255);//清背景
  for(int i=0;i<pigN; i++){
      image(imgPig, pigX[i], pigY[i], 100,100);
  }
  image(imgBird, birdX,birdY,100,100);//不能一直跟著mouse動,改用birdX,birdY
  if(bMoving) line(birdX,birdY, oldX,oldY);//有按到,才能動它
  birdX+=vx; birdY+=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; vy=(oldY-mouseY)/10;// 0.1倍
  }
}
void mousePressed(){//按下去才開始動
  if(mouseButton==RIGHT){
      player2.rewind();//把音樂時間調到一開始
      player2.play();//再播
      pigX[pigN]=mouseX;
      pigY[pigN]=mouseY;
      pigN++;
  }
  if(dist(mouseX,mouseY,birdX,birdY)<50){
    oldX=birdX;  oldY=birdY;
    bMoving=true;//按下去時,有按到圖案才會動
  }
}


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

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

  }
}

由於豬的部分是用陣列設為20隻,因此按滑鼠超過20下後會造成系統錯誤,系統便產生error。

之後的想法是加入更多的音效,例如;碰撞聲、失敗音效等等。另外也想設計更多讓圖片互動的程式出來。





沒有留言:

張貼留言