2023年11月2日 星期四

真week08

 week08

牛頓力學:靜者恆靜,動者恆動

void setup(){
 size (400,400); 
}
float x=200,y=200,vx=1,vy=1;
void draw(){
 ellipse(x,y,10,10); 
 x+=vx;
 y+=vy;
}








位置、速度、加速度
重力加速度:
void setup(){
 size (400,400); 
}
float x=50,y=250,vx=2,vy=-20;
void draw(){
 ellipse(x,y,10,10); 
 x+=vx;
 y+=vy;
 vy+=0.98;
}










碰撞偵測
void setup(){
 size (400,400); 
}
float x=50,y=250,vx=2,vy=-20;
void draw(){
  x+=vx;
 y+=vy;
 vy+=0.98;
 if(y>350){
  y=350; 
 }
 ellipse(x,y,10,10);
}










碰撞能量耗損
void setup(){
 size (400,400); 
}
float x=50,y=250,vx=2,vy=-20;
void draw(){
  x+=vx;
 y+=vy;
 vy+=0.98;
 if(y>350){
  y=350; 
  vy=-vy*0.5;
 }
 ellipse(x,y,10,10);
}









馬力歐背景左右移動
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
 }
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
 }







按上鍵會飛走
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  marioY+=vy;
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
 }
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
  if (keyCode==UP)vy=-20;
 }
void keyReleased(){
  if(keyCode==LEFT||keyCode==RIGHT)vx=0;
  }








y加上重力加速度往下
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  if(flying){
  marioY+=vy;
  vy+=0.98;
  if(marioY>=250){
    marioY=250;
    flying=false;
    }
  }
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
 }
 boolean flying=false;
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
  if (keyCode==UP&&flying==false){
    vy=-20;
    flying=true;
  }
 }
void keyReleased(){
  if(keyCode==LEFT||keyCode==RIGHT)vx=0;
  }













新增磚塊
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  if(flying){
  marioY+=vy;
  vy+=0.98;
  if(marioY>=250){
    marioY=250;
    flying=false;
    }
  }
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
  fill(229,119,42);rect(200,150,20,20);
  if (hitBox(200,150,20,20)){
   vx=0; 
  
   marioY=150+20;
  }
 }
 boolean hitBox(int x,int y,int w,int h){
  if (x<marioX && marioX<x+w && y<marioY&& marioY<y+h)return true; 
  else return false;
 }
 boolean flying=false;
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
  if (keyCode==UP&&flying==false){
    vy=-20;
    flying=true;
  }
 }
void keyReleased(){
  if(keyCode==LEFT||keyCode==RIGHT)vx=0;
  }










球卡在上面不往下掉
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  if(flying){
  marioY+=vy;
  vy+=0.98;
  if(marioY>=250){
    marioY=250;
    flying=false;
    }
  }
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
  fill(229,119,42);rect(200,150,20,20);
  if (hitBox(200,150,20,20)){
   if (vy>0){
    marioY=150-10;
    flying=false;
   }else{
     vy=0;
     marioY=150+20+10;
   }
  
   marioY=150+20;
  }
 }
 boolean hitBox(int x,int y,int w,int h){
  if (x-7<marioX && marioX<x+w+7 && y-10<marioY&& marioY<y+h+10)return true; 
  else return false;
 }
 boolean flying=false;
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
  if (keyCode==UP&&flying==false){
    vy=-20;
    flying=true;
  }
 }
void keyReleased(){
  if(keyCode==LEFT||keyCode==RIGHT)vx=0;
  }












撞到磚塊會掉下也可以站上面
void setup(){
 size (400,400); 
}
float marioX=50,marioY=250,vx=0,vy=0;
void draw(){
  background(108,137,255);
  marioX+=vx;
  if(flying){
  marioY+=vy;
  vy+=0.98;
  if(marioY>=250){
    marioY=250;
    flying=false;
    }
  }
  fill(255,0,0);ellipse(marioX,marioY,15,20);
  fill(229,119,42);rect(0,260,400,150);
  fill(229,119,42);rect(200,150,20,20);
  if (hitBox(200,150,20,20)){
   if (vy>0){
    marioY=150-10;
    flying=false;
    stand_box=true;
   }else{
     vy=0;
     marioY=150+20+10;
   }
  }
  if(stand_box==true&&flying==false&&leaveBox(200,150,20,20)){
    stand_box=false;
    flying=true;
    vy=0;
}
 }
 boolean leaveBox(int x,int y,int w,int h){
 if (x-7>marioX && marioX>x+w+7) return true;
 else return false;
 }
 boolean hitBox(int x,int y,int w,int h){
  if (x-7<marioX && marioX<x+w+7 && y-10<marioY&& marioY<y+h+10)return true; 
  else return false;
 }
 boolean flying=false,stand_box=false;
 void keyPressed(){
  if (keyCode==RIGHT)vx=2;
  if (keyCode==LEFT)vx=-2;
  if (keyCode==UP&&flying==false){
    vy=-20;
    flying=true;
  }
 }
void keyReleased(){
  if(keyCode==LEFT||keyCode==RIGHT)vx=0;
  }

沒有留言:

張貼留言