2019年10月3日 星期四

Week04_Summer

 今日目標:

*做出碰撞到邊界會彈回的圓圈
*做出一個拋物線





 01 做出左右移動的圓圈


----改良----

 02 上下左右都可以彈的圓圈

  程式碼:

int ballX = 300,ballY = 300;
int vx = -2,vy = 2;
void setup(){
    size(700,400);
}

void draw(){
  background(255);
  ellipse(ballX,ballY,30,30);
  ballX += vx;
  ballY += vy;
  if(ballX<0-15) vx += 2;
  if(ballX>700+15) vx = -2;
  if(ballY>0-15) vy += -2;
  if(ballY<400+15) vy += 2;
}




 03 牛頓第一定律 - 慣性運動 - 第一階
  程式碼:

float ballX = 100,ballY = 300;
float vx = +2,vy = -10;
void setup(){
    size(600,400);
}

void draw(){
  //background(255);
  ellipse(ballX,ballY,30,30);
  ballX += vx;
  ballY += vy;
  vy += 0.98;
  if(ballX<0+15)   vx = -vx*0.9;
  if(ballX>600-15) vx = -vx*0.9;
  if(ballY<0+15)   vy = -vy*0.9;
  if(ballY>400-15) vy = -vy*0.9;
}




 04 牛頓第一定律 - 慣性運動 - 完成

  程式碼:

float ballX = 100,ballY = 300;
float vx = +2,vy = -10;
void setup(){
    size(600,400);
}

void draw(){
  //background(255);
  ellipse(ballX,ballY,30,30);
  ballX += vx;
  ballY += vy;
  vy += 0.98;
  if(ballX<0+15)   vx = -vx*0.9;
  if(ballX>600-15) vx = -vx*0.9;
  if(ballY<0+15)   vy = -vy*0.9;
  if(ballY>400-15){
    vy = -vy * 0.9;
    vx = vx * 0.9;
    ballY = 400-15;
  }
  vy += 0.98;
}







 05 mario 左右移動、跳起來

  程式碼:

PImage imgMario;
float marioX=100,marioY=0;
float marioVX=0,marioVY=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.jpg");
}
void draw(){
  background(255);
  rect(0,200,500,100);
  image(imgMario,marioX,marioY,100,100);
  marioX += marioVX;
  marioY += marioVY;
  if(marioY<=100) marioVY += 0.9;
  else marioY = 100;
}
void keyPressed(){
  if(keyCode==RIGHT) marioX+=3;
  if(keyCode==LEFT) marioX-=3;
  if(keyCode==UP){
    marioVY=-15;
  }
}



 06 mario順順的移動


  程式碼:

PImage imgMario;
float marioX=100,marioY=0;
float marioVX=0,marioVY=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.jpg");
}
void draw(){
  background(255);
  rect(0,200,500,100);
  image(imgMario,marioX,marioY,100,100);
  marioX += marioVX;
  marioY += marioVY;
  if(softBrake==1) marioVX *= 0.9;
  if(marioY<=100) marioVY += 0.9;
  else marioY = 100;
}
int softBrake=0;
void keyReleased(){
  if(keyCode==RIGHT) softBrake=1;
  if(keyCode==LEFT) softBrake=1;
}
void keyPressed(){
  if(keyCode==RIGHT){
    marioVX=3;
    softBrake=0;
  }
  else if(keyCode==LEFT){
    marioVX=-3;
    softBrake=0;
  }
  if(keyCode==UP){
    marioVY=-15;
  }
}



 未完成程式碼(跳的上障礙物):

PImage imgMario;
float marioX=100,marioY=0;
float marioVX=0,marioVY=0;
int flying=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.jpg");
}
void draw(){
  background(255);
  rect(0,200,500,100);
  image(imgMario,marioX,marioY,100,100);
  marioX += marioVX;
  marioY += marioVY;
  if(softBrake==1) marioVX *= 0.9;
  rect(200,100,100,50);
  if(marioY<=100) marioVY += 0.9;
  else marioY = 100;
}
int softBrake=0;
void keyReleased(){
  if(keyCode==RIGHT) softBrake=1;
  if(keyCode==LEFT) softBrake=1;
}
void keyPressed(){
  if(keyCode==RIGHT){
    marioVX=3;
    softBrake=0;
  }
  else if(keyCode==LEFT){
    marioVX=-3;
    softBrake=0;
  }
  if(keyCode==UP){
    marioVY=-15;
    flying=1;
  }
}

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...