2021年11月22日 星期一

我與天文社與漢堡排_week09

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

畫出更多球球🏀🏀🏀🏀

改用for迴圈
👉程式碼
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];
  }
}

彈力球球🎈
👉程式碼(更改部分為豆沙粉色   
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];
    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++){///迴圈會跑4次
    fill(255,255,0);ellipse(x[i],y[i],50,50);
    if(dist(mouseX,mouseY,x[i],y[i])<=50){
      continue;///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 []vx={0,0,0,0};
float []vy={3,2,2.5,4};
boolean[]dead={false,false,false,false};//false 0, true 1
///boolean
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];
    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變數,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);//綠色
}

讓更多球球消失Part1


👉程式碼(更改部分為豆沙粉色   
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);//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;//如果死掉了,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);
}

讓更多球球消失Part2
👉程式碼
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);
    vx=random(-4,4);
    vy=random(-4,4);///介於-4到4之間挑一個亂數
    dead=false;
  }
  void draw(){
    if(dead==true) return;///離開函式
    ellipse(x,y,100,100);
     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();
   }
}

到處反彈的球球們
👉加入這行程式碼
vy+=0.98;///重力加速度

特訓99

躲避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 ( mouseX!=0 && dist(mouseX, mouseY, x, y)<50) {
      dead=true;
      gameOver= true;
    }
    x=x+vx;
    y=y+vy;
    if(y>500 || y<0)return;///如果沒有改return會反彈
    if(x>500 || x<0)return;
  }
}
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);
}

如果喜歡我的部落格的話
請幫我按右上角的愛心(根本按不下去)

也可以按右上角的小鈴鐺(這也按不下去)
才不會錯過我的更新哦!😉

沒有留言:

張貼留言