2017年10月2日 星期一

week 03

一、做出憤怒鳥Angry Bird小遊戲

1.讀入圖片,並讓中心點都在圖

PImage imgbird,imgpig;
void setup(){
  size(800,600);
  imgbird=loadImage("bird.png");
  imgpig=loadImage("pig.png");
  imageMode(CENTER);
}
float birdX=400,birdY=300;
float pigX=700,pigY=200;2
void draw(){

  background(255);
  image(imgpig,pigX,pigY,100,100);
  image(imgbird,birdX,birdY,100,100);
}

2.使憤怒鳥有速度、加速度、引力以及彈弓
PImage imgbird,imgpig;
void setup(){
  size(800,600);
  imgbird=loadImage("bird.png");
  imgpig=loadImage("pig.png");
  imageMode(CENTER);
}
float birdX=400,birdY=300;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
float pigX=700,pigY=200;
void draw(){
  background(255);
  image(imgpig,pigX,pigY,100,100);
  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;
}

3.有邊界碰撞反彈、有擊中判定(完成)
PImage imgbird,imgpig;
void setup(){
  size(800,600);
  imgbird=loadImage("bird.png");
  imgpig=loadImage("pig.png");
  imageMode(CENTER);
}
float birdX=400,birdY=300;
float birdVX=0,birdVY=0;
float birdAX=0,birdAY=0;
float pigX=700,pigY=200;
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.98;
  birdVY*=0.98;
}
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;
}

沒有留言:

張貼留言