2021年11月22日 星期一

豹笑英文 (微積分 week07)

 

//能不能東西動起來!!!掉下來的金幣 (座標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++; //速度 1,2,3,...

  //y++;

  //y++;

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

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

}


//不只一個在動
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; //vy是速度
  y2=y2+vy2; //vy2是速度
}

//很多組在動! for+陣列
float[] x={250,150,350,300};
float[] y={0,150,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[i]是速度
    if(y[i]>600) vy[i] = -vy[i]; //撞到下方
    if(y[i]<0) vy[i] = -vy[i]; //撞到上方
  }
}

//mouse碰到球,可以得分
float[] x={250,150,350,300};
float[] y={0,150,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[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,300};
float[] y={0,150,80,100};
float[] vx={0,0,0,0};
float[] vy={3,2,2.5,4};
boolean[] dead={false,false,false,false};
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);
}

//球變多了
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]=100;
    vy[i]=random(2,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{ //發明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();
  }
}

//上下左右都會反彈
class Ball{ //發明Ball物件
  float x,y,vx,vy;
  boolean dead;
  Ball(){ //建構 同名的東西
    x = random(500);
    y = random(500);
    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;
    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();
  }
}

//特訓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*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);
}





沒有留言:

張貼留言