2017年9月30日 星期六

17/09/30 德宇的筆記Week03

目標一:做出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;
}




目標二:做出小朋友下樓梯遊戲




程式碼:
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;
}

沒有留言:

張貼留言