2023年11月2日 星期四

week08

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){  
 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);
}
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;  
}


// 碰撞偵測: Mario v.s. Pikachu
// 牛頓力學 (1)靜者恆靜、動者恆動
//          (2)f=m*a 位置、速度、加速度
void setup()
{
  size(400, 400);
}
float MarioX=50, MarioY=250, vx=0, vy=0;
void draw()
{
  background(108, 137, 255); // blue
  MarioX += vx; 
  if (flying){ // 如果跳起來
    MarioY += vy; // 上下位置會改變
    vy += 0.98; // 重力加速度往下
    if (MarioY>=250){ // 如果接觸到地面
      MarioY = 250;
      flying = false; // 不再飛行
    }
  }
  fill(255, 0, 0); ellipse(MarioX, MarioY, 15, 25);
  fill(229, 119, 42); rect(0, 260, 400, 150);
  fill(229, 119, 42); rect(200, 150, 20, 20);
  if (hitBlock(200, 150, 20, 20)){
    if (vy>0){
      MarioY = 150-10; // 在block上方 
      flying = false;
      stand_block = true;
    }else{ // block下方
      vy=0;
      MarioY = 150+20+10;
    }
  }
  if (stand_block == true && flying == false && leaveBlock(200, 150, 20, 20)){
    stand_block = false;
    flying = true;
    vy=0;
  }
}
boolean leaveBlock(int x, int y, int w, int h)
{
  if (x-7>MarioX || MarioX>x+w+7) return true;
  else return false;
}
boolean hitBlock(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_block = false;
void keyPressed()
{
  if (keyCode == RIGHT) vx=2;
  if (keyCode == LEFT) vx=-2;
  if (keyCode == UP && flying==false) { // 按下UP
    vy = -20; 
    flying = true; // 開始跳
  }
}
void keyReleased()
{
  if (keyCode == LEFT || keyCode == RIGHT) vx = 0;
}

沒有留言:

張貼留言