2021年11月22日 星期一

(☞゚ヮ゚)☞ Week09

 

✨Week09✨

球下墜


💻程式碼

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;//球下墜速度
}

兩顆球下墜

💻程式碼

float x1=250,y1=0,vx1=0,vy1=3; //第一顆球位置 速度
float x2=150,y2=50,vx2=0,vy2=2;//第二顆球位置 速度
void setup()
{
  size(500,600);
}
void draw()
{
  background(255);
  ellipse(x1,y1,50,50);//第一顆球
  ellipse(x2,y2,50,50);//第二顆球
  y1=y1+vy1;//第一顆球
  y2=y2+vy2;//第二顆球
}

多顆球下墜

💻程式碼

float []x={250,150,350,350};//位置x軸
float []y={0,50,80,100};//位置y軸
float []vx={0,0,0,0};//速度x
float []vy={3,2,2.5,4};//速度y
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];//速度
  }
}

讓球反彈

💻程式碼

float []x={250,150,350,350};
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];
    if(y[i]>600)vy[i]=-vy[i];//當球來到畫面下緣 讓球的往反方向跑
    if(y[i]<0)vy[i]=-vy[i];//當球來到畫面上緣 讓球的往反方向跑
  }
}

碰球得分

💻程式碼

float []x={250,150,350,350};
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];
    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);//滑鼠的球
}

碰到消失

💻程式碼

float []x={250,150,350,350};
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};//布林陣列 true1 false0
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;
    }
    fill(255,255,0); ellipse(x[i],y[i],50,50);  
    y[i]=y[i]+vy[i];
    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 down;//按下去
void setup()
{
  size(500,300);
}
void draw()
{
  if(mousePressed)down=true;//滑鼠按下是True
  else down=false;
  print(down);
  if(down) background(255,255,0);//當true變黃色
  else background(0,255,0);//false綠色
}

球的隨機設定

💻程式碼

float []x;
float []y;
float []vy;
boolean [] dead;
int N=20;
void setup()
{
  size(500,600);
  x=new float[N];//有20顆球
  y=new float[N];
  vy=new float[N];
  dead=new boolean[N];
  for(int i=0;i<N;i++)
  {
    x[i]=random(500);//500以下的隨機數值 x軸
    y[i]=random(100,200);//100~200的隨機數值 y軸
    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;
    }
    fill(255,255,0); ellipse(x[i],y[i],50,50);  
    y[i]=y[i]+vy[i];
    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);
}

class物件



💻程式碼

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];//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();
  }
}

球隨機方向移動

💻程式碼

class Ball
{
  float x,y,vx,vy;
  boolean dead;
  Ball()
  {
    x=random(500);
    y=random(100,200);
    vx=random(-4,4);//隨機x軸速度
    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(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();
  }
}

球與重力加速度

💻程式碼

class Ball
{
  float x,y,vx,vy;
  boolean dead;
  Ball()
  {
    x=random(500);
    y=random(100,200);
    vx=random(-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*1;
    y=y+vy*1;
    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();
  }
}

特訓99

💻程式碼

class Ball
{
  float x,y,vx,vy;
  boolean dead;
  Ball()
  {
    reborn();
  }
  void reborn()
  {
    x=random(500);
    y=random(500);
    vx=random(-2,2);
    vy=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;
    y=y+vy;
    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);
}


沒有留言:

張貼留言