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;
}
沒有留言:
張貼留言