2021年11月22日 星期一

我出一百萬

Week 11 👀


加入一個圓











//Step01-1:能不能東西動起來!!!!!掉下來金幣(座標x,y)

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

void setup()

{

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

  y = y + vy; //vy是速度

}


兩個圓✊✊





//Step01-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;//vy是速度
}


加入很多組圓👐











//Step01-3:很多組!for+陣列

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

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];//vy是速度

  }

}


撞到邊框會反彈增加互動👇👇










//Step01-4:多一點互動

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

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];//vy是速度

    if(y[i]>600) vy[i]= -vy[i];//撞到下方

    if(y[i]<0) vy[i]= -vy[i];//撞到上方

  }

}


碰到球會讓紅色球停止










//Step02-1:mouse碰到球,可得分

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

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++)

  {

    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);

}


可將球死掉👀👀











//Step02-2: dead[] array

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

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

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

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

boolean [] dead={false,false,false,false};//false 0,true 1

void setup()

{

  size(500,600);

}

void draw(){

  background(255);

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

  {

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

       dead[i]=true;//碰到,就死掉

    }

    if(dead[i]==true) continue;//如果死掉了,continue換下一個

    fill(255,255,0);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];//撞到上方

  }

  fill(255,0,0);ellipse(mouseX,mouseY,50,50);

}


解釋boolean意思👌










//Step02-2b: 練習 boolean 變數true成立,false不成立

boolean down;//按下去

void setup(){

  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);//綠色

}

讓球多一點✊✊✊✊✊





//Step03-1: 希望能多一點,不只4個
float []x;
float []y;
float []vx;
float []vy;
boolean [] dead;
int N=20;
void setup()
{
  size(500,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);//500以下的亂數
    y[i] = random(100,200);
    vy[i] = random(3,4);//3,4中間亂數
    dead[i] = false;//沒有死
  }
}
void draw(){
  background(255);
  for(int i=0; i<N; i++)
  {
    if(dist(mouseX,mouseY,x[i],y[i])<=50){
       dead[i]=true;//碰到,就死掉
    }
    if(dead[i]==true) continue;//如果死掉了,continue換下一個
    fill(255,255,0);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];//撞到上方
  }
  fill(255,0,0);ellipse(mouseX,mouseY,50,50);
}











//Step03-2: 用class物件

class Ball{

  float x,y,vx,vy;

  boolean dead;

  Ball(){

    x= random(500);//500以下的亂數

    y= random(100,200);

    vy= random(3,4);//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();  

  }

}





//Step04-1: 
class Ball{
  float x,y,vx,vy;
  boolean dead;
  Ball(){
    x= random(500);//500以下的亂數
    y= random(500);
    vy= random(-4,4);//-4,4中間亂數
    vy= 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(x>500 || x<0) vx=-vx;
    if(y>500 || 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();  
  }
}

球加上重力加速度==>會彈👏👏👏









//Step04-2: 

class Ball{
  float x,y,vx,vy;
  boolean dead;
  Ball(){
    x= random(500);//500以下的亂數
    y= random(500);
    vy= random(-4,4);//-4,4中間亂數
    vy= 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(x>500 || x<0) vx=-vx;
    if(y>500 || 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();  
  }
}







//Step04-3

class Ball{//我們發明 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, 5,5);

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

      dead=true;

      gameOver=true;

    }

    x = x + vx*1;//速度*時間=距離

    y = y + vy*1;

    if(y>500 || y<0) reborn();

    if(x>500 || x<0) reborn();

  }

}

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);  

}

沒有留言:

張貼留言