2023年11月2日 星期四

10160163_week08

 week08

碰撞偵測:Mario vs Pikachu



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 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(299,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;
    //vy+=0.98;
    fill(255,0,0);ellipse(marioX,marioY,15,20);
    fill(299,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;
}




球可以飛


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(299,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){
    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(299,119,42);rect(0,260,400,150);
    fill(299,119,42);rect(200,150,20,20);
    if(hitBox(200,150,20,20)){
      vy=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(299,119,42);rect(0,260,400,150);
    fill(299,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;
      }
    }
}
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(299,119,42);rect(0,260,400,150);
    fill(299,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;
}

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(299,119,42);rect(0,260,400,150);
    drawAndTestBox(100,150,20,20);
    drawAndTestBox(200,150,20,20);
    drawAndTestBox(300,150,20,20);
}
void drawAndTestBox(int x,int y,int w,int h){
  fill(229,119,42);rect(x,y,w,h);
  if(hitBox(x,y,w,h)){
    if(vy>0){
      marioY=y-10;
      flying=false;
      stand_box=true;
    }else{
      vy=0;
      marioY=y+h+10;
    }
  }
  if(stand_box==true && flying==false && leaveBox(x,y,w,h)){
    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;
}


沒有留言:

張貼留言