2019年10月3日 星期四

06160396_互動技術_W4

1.以下的程式碼是可以讓一顆球能左右動來動去
int ballX=300,ballY=300;
int vx = 2;
void setup(){
  size(700,400);
}
void draw(){
  background(255);
  ellipse(ballX,ballY,30,30);
  ballX+= vx;
  if(ballX<0) vx = +2;
  if(ballX>700) vx = -2;
}
以下如圖
2.以下的程式碼是可以讓球碰到牆壁彈來彈去
int ballX=300,ballY=300;
int vx = 2;
int vy = 2;
void setup(){
  size(700,400);
}
void draw(){
  background(255);
  ellipse(ballX,ballY,30,30);
  ballX+= vx;
  if(ballX<0+15) vx = +2;
  if(ballX>700-15) vx = -2;
  ballY+= vy;
  if(ballY<0+15) vy = +2;
  if(ballY>400-15) vy = -2;
}
以下如圖
3.以下的程式碼是可以讓球跟牛頓第二運動定律一樣彈跳著
float ballX=100,ballY=300;
float vx = +2;
float 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>700-15) vx = -vx*0.9;
  if(ballY<0+15)   vy = -vy*0.9;
  if(ballY>400-15) vy = -vy*0.9;
}
以下如圖

4.以下程式碼是讓球會受到摩擦力影響停下來
float ballX=100,ballY=300;
float vx = +2;
float vy = -10;
void setup(){
  size(600,400);
}
void draw(){
  ///background(255);
  ellipse(ballX,ballY,30,30);
  ballX+= vx;
  ballY+= vy;
  if(ballX<0+15)   vx = -vx*0.9;
  if(ballX>700-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;
}
以下如圖
5.以下程式碼是可以做出可以讓馬力歐左右動,也可以跳來跳去
PImage imgMario;
float marioX=100,marioY=100;
float marioVX=0, marioVY=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.png");
}
void draw(){
  background(255);
  rect(0,200,500,50);
  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;
  }
}
6.以下程式碼是讓馬力歐活動更平順
PImage imgMario;
float marioX=100,marioY=100;
float marioVX=0, marioVY=0;
void setup(){
  size(500,500);
  imgMario = loadImage("mario.png");
}
void draw(){
  background(255);
  rect(0,200,500,50);
  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;
  }else if(keyCode==UP){
    marioVY = -15;
  }
}
以下如圖

沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

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