2021年11月22日 星期一

week08

這邊先做出這個球讓他一直下墜,vy值愈大,球會掉得愈快喔!




















也可以延伸做出兩個下墜的!


如此一來 也可以做出一個會掉4個的(因為有4組陣列)





















程式碼:

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






















下面多那兩行 就會讓球球變得很Q彈~可以上下互撞。





















continue會讓後面不能移動,所以會整個暫停住!
就像抓蚊子一樣 一抓就死了紅點碰到的東西就會直接死亡 暫停了~
(下方只有一顆沒碰到的黃球在動)





















程式碼:

//step01-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};
boolean [] dead={false,false,false,false};//false 0,truc 1
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)
    {
      dead[i]=true;//剛剛是暫停 現在是碰到就死
    }
    if(dead[i]==true)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);
}



接著是同學對boolean函數有疑問 老師幫助我們更好理解
可以看到下面 待機時一堆false
但只要利用mousePressed壓著下方和顏色同時都會改變成true

回到一開始的球球 現在要用很多


上面要把陣列都改掉,下面void draw不需要動 原理是一樣的~只是原本for迴圈裡的那個4個陣列要改成N!

//step03-1 希望多很多,不只4個球
float []x;
float []y;
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);
    dead[i] =false;//沒死
  }
}
void draw()
{
  background(255);
  for(int i=0;i<N;i++)
  {
    fill(255,255,0);ellipse(x[i],y[i],50,50);
    if(dist(mouseX,mouseY,x[i],y[i])<=50)
    {
      dead[i]=true;//剛剛是暫停 現在是碰到就死
    }
    if(dead[i]==true)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);
}

























沒有留言:

張貼留言