2021年11月22日 星期一

week07

 



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

void setup(){

  size(500,600);

}

void draw(){

  background(255);

  ellipse(x,y,50,50);

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

  y=y+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+3;///3是速度
  y=y+vy;
  y2=y2+vy2;
}


//很多組
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];//vy是速度
  }
}

可以讓球碰到牆反彈

//很多組又多一點互動  
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];//vy是速度
    if(y[i]>600) vy[i] = -vy[i];//撞到下方
    if(y[i]<0)vy[i]=-vy[i];//撞到上方
  }
}

//很多組又多一點互動  
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++){
    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);
}

這個程式碼可以讓紅球碰到的黃球消失
//很多組又多一點互動  
float []x={250,150,350,300};
float []y={0,50,80,100};
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++){
    ///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;
    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 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);//綠色
}


變出隨機的球數
float []x;//外面宣告global陣列變數
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;
    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);
}

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();
  }
}
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) 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{
  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) 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(){//建構 同名的東西
    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);  
}

沒有留言:

張貼留言