2020年5月8日 星期五

week11-泡沫排序

泡沫排序

 當左邊的數字沒有大於右邊的數字時,會換成右邊的數字再去跟右邊比大小。
每次比完一輪後會再從頭開始,兩兩比較,較小的數字會繼續在原地不動
,越大越往後面走。


接上次小精靈

畫出會張嘴的精靈


鍵盤下上左右跟著移動的精靈


 嘴巴跟著左右鍵,改變方向








程式碼
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},
  {1,1,1,1,1,  1,1,1,1,1},
};
void setup()
{
   size(400,400);
   
}
int x=100,y=100,dx=1,dy=0,angle=45,diff=2,dir=0;
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;
     }
   }
   fill(#FFCF0D);
   arc(x,y,40,40,radians(dir+angle),radians(dir+360-angle),PIE);
   angle+=diff;
   if(angle>60)diff=-2;
   if(angle<0)diff=+2;
   x+=dx;y+=dy;
}
void keyPressed()
{
  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;}
}

沒有留言:

張貼留言