目標一:做出angry bird遊戲
1.拖曳滑鼠使產生物理慣性(繪圖模擬)
程式碼:
void setup()
{
size(800,600);
}
float HookX=400,HookY=300; //Hook的初始位子
float HookVX=0,HookVY=0; //Hook的初始速度
void draw()
{
background(255);
ellipse(HookX,HookY, 50,50); //畫一個半徑50的圓
line(HookX,HookY,400,300); //畫一條線
HookX+=HookVX;
HookY+=HookVY;
}
void mouseDragged() //拖曳滑鼠
{
HookX=mouseX;
HookY=mouseY;
}
void mouseReleased() //放開滑鼠
{
HookVX=(400-mouseX)/100.0; //X軸位移方向
HookVY=(300-mouseY)/100.0; //Y軸位移方向
}
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=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; //加速度9.8
}
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=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.997;
BirdVY*=0.997;
}
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;
}
沒有留言:
張貼留言