2020年5月14日 星期四

W11-泡泡排序法、Pacman吃豆子 (陣列、距離)

W11-01

youtube影片: 


W11-02Pacman吃子 (陣、距)

畫一隻嘴巴會動的黃色小精靈(參考Week09)

加入鍵盤左右上下鍵操控小精靈移動方向
向上、下移動時,嘴巴的方向還是沒跟著變

增加一個dir嘴巴  右>下>左>上 方向的角度
(0,90,180,270)

增加dir角度方向後,小精靈的嘴巴就能夠隨著
上下左右改變方向了~
 豆子的分布示意圖 : 
 做一個二維陣列,畫出豆子大小、座標分布位置


最後判斷豆子與小精靈的距離,
小精靈接近豆子座標半徑20度內,豆子就被吃掉(消失為0)

///吃豆子,要先畫出豆子
int [][]bean={///二維陣列
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1},
  {1,1,1,1,1, 1,1,1,1,1}
};
void setup()
{
  size(400,400);
}
int angle=45,X=100,Y=100,dx=1,dy=0;
int diff=2,dir=0;///差距的值 (1/-1)
void draw(){
  background(0);///背景黑
  ///畫豆子
  fill(255);///白色豆子
  for(int y=0;y<10;y++){
    for(int x=0;x<10;x++){
      if(bean[y][x]==0) continue;
      ellipse(20+x*40, 20+y*40, 10, 10);
      if( dist(X,Y, 20+x*40, 20+y*40)<20 ) bean[y][x]=0;
    }///如果小精靈跟豆子座標接近的話(半徑<20),豆子清為0
  }
  fill(#FAFF00);///小精靈顏色
  arc(X,Y,40,40, radians(dir+angle), radians(dir+360-angle), PIE);
  ///radian圓弧弧度
  angle+=diff;
  if(angle>60) diff=-2;
  if(angle<=0) diff=+2;
  X+=dx;Y+=dy;
}
void keyPressed(){//增加方向的角度dir:0,90,180,270
  if(keyCode==RIGHT) {dx=+1; dy=0; dir=0;};
  if(keyCode==LEFT) {dx=-1; dy=0; dir=180;};
  if(keyCode==UP) {dx=0; dy=-1; dir=270;};
  if(keyCode==DOWN) {dx=0; dy=+1; dir=90;};
}

沒有留言:

張貼留言