2020年5月8日 星期五

程式設計Week11

泡沫排序法

程式碼:
//int [ ]a=new int[10]; //Java's Array
//int [ ]a={3,0,1,8,7,2,5,4,6,9};
//int [ ]a={6,3,5,9,1,0,4,2,7,8};
//int [ ]a={1,2,3,5,0,4,6,7,8,9};
//int [ ]a={0,9,1,2,3,5,4,6,7,8}; //對於快要排好的東西, 特別快!!!
int [ ]a={9,8,7,6,5,4,3,2,1,0};   //最糟的狀況:全倒 

void setup(){
  size(500,800);
  //for(int i=0;i<10;i++){
  //  a[i]=int(random(10)); //亂數決定數字
  //}
  textSize(36);
  textAlign(LEFT,TOP);
  showArray(y);
}

int y=0;

void showArray(int y){
  for(int i=0;i<10;i++){
    fill(255);  rect(i*50, y, 50,50);
    fill(0);         text(a[i], i*50, y);
  }
}
void draw(){

}

void mousePressed(){
  for(int i=0; i<10-1;i++){
    if(a[i] > a[i+1]){
      int temp=a[i];
      a[i]=a[i+1];
      a[i+1]=temp;
      fill(255,0,0,128); rect(i*50, y, 100,50);
    }
  }
  y+=50;
  showArray(y);
}

小精靈嘴開合

程式碼:
void setup( )
{
  size(400,400);
}

int X=100,Y=100,angle=45,diff=1;

void draw( )
{
  background(0);
  arc(X , Y , 80 , 80 , radians(angle) , radians(360-angle) , PIE);
  angle+=diff;
  if(angle>60) diff=-1;
  if(angle<0)   diff=1;
}


小精靈移動

程式碼:
void setup( )
{
   size(400,400);
}

int X=100 , Y=100 , dx=1 , dy=0 , angle=45 , diff=2;  //設移動方向

void draw( )
{
   background(0);
   arc(X , Y , 80 , 80 , radians(angle) , radians(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;
   }

   if(keyCode==LEFT)
   {
     dx=-1;dy=0;
   }

   if(keyCode==DOWN)
   {
     dx=0;dy=+1;
   }

   if(keyCode==UP)
   {
     dx=0;dy=-1;
   }
}


小精靈轉方向

程式碼:
void setup( )
{
  size(400,400);
}

int X=100,Y=100,dx=1,dy=0,angle=45,diff=2,dir=0;  //旋轉角度90 180 270 360

void draw( )
{
  background(0);
  arc(X,Y,80,80,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==DOWN)
  {
    dx=0;dy=+1;dir=90;
  }

  if(keyCode==UP)
  {
    dx=0;dy=-1;dir=270;
  }
}

小精靈吃豆子

程式碼:

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 , 80 , 80 , 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==DOWN)
  {
    dx=0;dy=+1;dir=90;
  }

  if(keyCode==UP)
  {
    dx=0;dy=-1;dir=270;
  }
}

沒有留言:

張貼留言