2017年9月30日 星期六

Week03 ShiRo

►製作憤怒鳥小遊戲

step1. 拉圖檔 --xx.png  (半透明圖檔)
   

step2. 拉近processing 程式裡。(快捷建:Ctrl+K 打開程式目錄 )



step3.程式碼 
PImage的物件變數宣告
image()秀圖通常寫在draw()裡面


step4.滑鼠按下才會動         
 先設定變數 float

在座圖檔的位置設定 

最後寫拖曳時會跟著滑鼠跑 
mouseDragged()

完成圖
►製作憤怒鳥小遊戲2
     製作橢圓物體朝著線方向移動







改用圖來拖曳
把圖的(0,0)調到圖的中心位置:imageMode(CENTER)


加速度:  mmAX ,mmAY


完成圖 


做要被打的物體--mm2 
  • 宣告mm2位置boolean來判斷存在是否。
  • 判斷障礙物是否存在 :  if  (mm2Alive) image( img2 ,  mm2X  ,   mm2Y  ,  100  ,  100  );
  • 判斷障礙物是否超過邊界:if  (dist(mm2X,mm2Y,mmX,mmY)  <100   ){ mm2Alive=false;  }



製作邊界摩擦力:mmVX *= 0.997; mmVY *= 0.997;
※撞到邊界時,會等速反彈。
►程式碼


PImage img1,img2;

void setup()
{
  size(800,600);
  img1= loadImage("1.png");
  img2= loadImage("2.png");
  imageMode(CENTER);    ///圖檔中心
}
float mmX=400 ,mmY=300;
float mmVX=0 ,mmVY=0;
float mmAX=0 ,mmAY=0;
float mm2X=700 ,mm2Y=400;
boolean mm2Alive=true; ///如果小小兵還活著,就畫出敵人
void draw()
{
   ///做判斷
   background(255);
   if(mm2Alive)image(img2,mm2X,mm2Y,100,100);  
    ///障礙物存在
   image(img1,mmX,mmY,100,100); 
   //ellipse(mmX,mmY,100,100);
   if(dist ( mm2X,mm2Y,mmX,mmY ) <100){
     mm2Alive=false;
   }
   ///障礙物和物體位置一樣,障礙物消失
   line(mmX,mmY,400,300);
   
   
   ///做更新
   mmX+=mmVX;
   mmY+=mmVY;
   ///判斷位置是否超過邊界
   if(mmX<50){mmX=50; mmVX= -mmVX;} ///左
   if(mmX>width-50){mmX=width-50; mmVX=-mmVX;}///右
   if(mmY<50){mmY=50; mmVY= -mmVY;}///上
   if(mmY>height-50){mmY=height-50; mmVY=-mmVY;}///下
   
   mmVX+=mmAX;  ///加速度
   mmVY+=mmAY;
   mmVX *= 0.997;  ///x空氣摩擦力
   mmVY *= 0.997;  ///y空氣摩擦力
   //image(img2,400,300);
}
void  mouseDragged()    ///按下滑鼠
{
    mmX=mouseX;
    mmY=mouseY;
    mmVX=mmVY=mmAX=mmAY=0;
}
void mouseReleased()     ///滑鼠放開後
{
  mmVX =(400-mouseX)/10.0;  ///以距離來計算移動速度
  mmVY =(300-mouseY)/10.0;
  mmAY=0.98; ///重力加速度
}
►小朋友下樓梯



►程式碼

void setup()
{
  size(600,500);
}
int bX=227,bY=400;
int kX=300,kY=250;  //宣告小朋友座標
void draw()
{
   background(0);
   rect(bX,bY,200,50);
   rect(kX,kY,50,50); //小朋友用小方塊表示,kX kY是在外面宣告的小朋友座標
   
   if(kX>bX-50 && kX<bX+200 && kY>bY-50)//邊界算法 要再稍微一小朋友的長寬大小及板子長寬大小略為調整, 小朋友站在板子上就不會往下掉
   {
     
   }
   else 
   kY++;//速度
}

沒有留言:

張貼留言