2021年11月22日 星期一

week weak

 

Step1-1:做一個會降落的球體


程式碼如下:

float x=250,y=0,vx=0,vy=3;

void setup(){

  size(500,600);

}

void draw(){

  background(x,y,50,50);

  ellipse(x,y,50,50);

  

  y=y+vy;

}

Step 1-2:畫兩個圈


程式碼如下:

float x=250,y=0,vx=0,vy=3;

float x2=150,y2=50,vx2=0,vy2=2;

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  ellipse(x2,y2,50,50);

  

  y=y+vy;

  y2=y2+vy2;

}


Step 1-3:用陣列、迴圈做很多很多圈圈


程式碼如下:

float [ ]x={250,150,350,300};

float [ ]y={0,50,80,100};

float [ ]vx={0,0,0,0};

float [ ]vy={3,2,2.5,4};

void setup(){

  size(500,600);

}

void draw(){

   background(255);

   for(int i=0;i<4;i++){

     ellipse(x[i],y[i],50,50);

     y[i]=y[i]+vy[i];

   }

}

Step 1-4:當球撞到下緣和上緣的時候,會反彈。


程式碼如下:

float []x={250,150,350,300};
float []y={0,50,80,100};
float []vx={0,0,0,0};
float []vy={3,2,2.5,4};
void setup(){
  size(600,600);
}
void draw(){
   background(255);
   for(int i=0;i<4;i++){
     ellipse(x[i],y[i],50,50);
     y[i]=y[i]+vy[i];//vy是速度
     if(y[i]>600)vy[i]=-vy[i];
     if(y[i]<0) vy[i]=-vy[i];
   }
}



Step 2-1:當屬標紅圈圈碰到金色圈圈,金色圈圈會停下來。
程式碼如下:

float []x={250,150,350,300};

float []y={0,50,80,100};

float []vx={0,0,0,0};

float []vy={3,2,2.5,4};

void setup(){

  size(600,600);

}

void draw(){

   background(255);

   for(int i=0;i<4;i++){

     fill(255,255,0);

     ellipse(x[i],y[i],50,50);

     if(dist(mouseX,mouseY,x[i],y[i])<=50){

       continue;

     }

     

     y[i]=y[i]+vy[i];//vy是速度

     if(y[i]>600)vy[i]=-vy[i];

     if(y[i]<0) vy[i]=-vy[i];

   }

   fill(255,0,0);

   ellipse(mouseX,mouseY,50,50);

}


Step2-2點擊視窗中的綠色即可變成紅色,轉成紅色視窗的同時下方訊息會顯示"True""

程式碼如下:

boolean down;
void setpu(){
  size(500,300);
}
void draw(){
  if(mousePressed)down= true;
  else down=false;
  print(down);
  if(down)background(255,0,0);
  else background(0,255,0);
}



Step 2-3紅圈碰到黃圈,黃圈會消失

程式碼如下:

float []x;

float []y;

float []vy;

boolean []dead;

int N=20;

void setup(){

  size(600,600);

  x=new float[N];

  y=new float[N];

  vy=new float[N];

  dead = new boolean[N];

  for(int i=0;i<N;i++){

    x[i]=random(500);

    y[i]=random(100,200);

    vy[i]=random(2,4);

    dead[i]=false;

  }

}

void draw(){

   background(255);

   for(int i=0;i<4;i++){

  

     if(dist(mouseX,mouseY,x[i],y[i])<=50){

       continue;

     }

     if(dead[i]==true)continue;

      fill(255,255,0);

     ellipse(x[i],y[i],50,50);

     y[i]=y[i]+vy[i];

     y[i]=y[i]+vy[i];//vy是速度

     if(y[i]>600)vy[i]=-vy[i];

     if(y[i]<0) vy[i]=-vy[i];

   }

   fill(255,0,0);

   ellipse(mouseX,mouseY,50,50);

}

Step 3-1:很多球球,碰到就消失



程式碼如下:

class Ball{

  float x,y, vx,vy;

  boolean dead;

  Ball(){

    x=random(500);

    y=random(100,200);

    vy=random(3,4);

    dead=false;

  }

  void draw(){

    if(dead==true)return;

    ellipse(x,y,50,50);

    if(dist(mouseX,mouseY,x,y)<50){

      dead=true;

    }

    y=y+vy;

    if(y>500)vy=-vy;

    if(y<0)vy= -vy;

    } 

  }

  Ball[] balls;

  void setup(){

    size(500,500);

    balls = new Ball[20];

    for(int i=0;i<20;i++){

      balls[i]=new Ball();

    }

  }

  void draw(){

    background(255);

    for(int i=0;i<20;i++){

      balls[i].draw();

    }

}

Step 3-2:很多球滾來滾去



程式碼如下:

class Ball{

  float x,y, vx,vy;

  boolean dead;

  Ball(){

    x=random(500);

    y=random(500);

    vy=random(-4,4);

    vx=random(-4,4);

    dead=false;

  }

  void draw(){

    if(dead==true)return;

    ellipse(x,y,50,50);

    if(dist(mouseX,mouseY,x,y)<50){

      dead=true;

    }

    x=x+vx;

    y=y+vy;

    if(y>500||y<0)vy= -vy;

    if(x>500||x<0)vx= -vx;

    } 

  }

  Ball[] balls;

  void setup(){

    size(500,500);

    balls = new Ball[20];

    for(int i=0;i<20;i++){

      balls[i]=new Ball();

    }

  }

  void draw(){

    background(255);

    for(int i=0;i<20;i++){

      balls[i].draw();

    }

}


Step3-3:重力加速度

程式碼如下:

class Ball{

  float x,y, vx,vy;

  boolean dead;

  Ball(){

    x=random(500);

    y=random(500);

    vy=random(-4,4);

    vx=random(-4,4);

    dead=false;

  }

  void draw(){

    if(dead==true)return;

    ellipse(x,y,50,50);

    //if(dist(mouseX,mouseY,x,y)<50){

     // dead=true;

   // }

    x=x+vx;

    y=y+vy;

    vy+=0.98;

    if(y>500||y<0)vy= -vy;

    if(x>500||x<0)vx= -vx;

    } 

  }

  Ball[] balls;

  void setup(){

    size(500,500);

    balls = new Ball[20];

    for(int i=0;i<20;i++){

      balls[i]=new Ball();

    }

  }

  void draw(){

    background(255);

    for(int i=0;i<20;i++){

      balls[i].draw();

    }

}

Step 4-1 特訓99,當屬標碰到紅色球球的時候會GameOver。


程式碼如下:

class Ball{

  float x,y, vx,vy;

  boolean dead;

  Ball(){

    reborn();

  }

  void reborn(){

    x=random(500);

    y=random(500);

    vy=random(-2,2);

    vx=random(-2,2);

    dead =false;

  }

  void draw(){

    if(dead==true)return;

    fill(255,0,0);ellipse(x,y,50,50);

    if(dist(mouseX,mouseY,x,y)<5){

      dead=true;

      gameOver=true;

    }

    x=x+vx;

    y=y+vy;

    vy+=0.98;

    if(y>500||y<0)vy= -vy;

    if(x>500||x<0)vx= -vx;

    } 

  }

  Ball[] balls;

  void setup(){

    size(500,500);

    balls = new Ball[99];

    for(int i=0;i<99;i++){

      balls[i]=new Ball();

    }

  }

  boolean gameOver=false;

  void draw(){

    background(0);

    for(int i=0;i<99;i++){

      balls[i].draw();

    }

    if(gameOver)background(255,0,0);

}

沒有留言:

張貼留言