2017年9月30日 星期六

week03 郭晉瑜上課筆記

匯入兩張png圖檔

PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
}
void draw(){
  background(255);
  image(img1,400,300,100,100); //前面兩碼調座標,後面兩碼調大小
  image(img0,mouseX,mouseY,100,100); //座標跟著滑鼠移動
}

把跟著滑鼠移動改成用拖曳的方法移動


PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
}
float marx=400, mary=300;
void draw(){
  background(255);
  image(img1,400,300,100,100);
  image(img0,marx,mary,100,100);
}
void mouseDragged()
{
  marx=mouseX; mary=mouseY;
}


加上速度,放開滑鼠可讓圖移動

PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
}
float marx=400, mary=300;
float marvx=0, marvy=0;
void draw(){
  background(255);
  image(img1,400,300,100,100);
  image(img0,marx,mary,100,100);
  marx +=marvx; //移動位置
  mary +=marvy; //移動位置
}
void mouseDragged()
{
  marx=mouseX; mary=mouseY;
}
void mouseReleased() //放開滑鼠
{
  marvx = (400-mouseX)/100.0; //移動速度 重量
  marvy = (400-mouseY)/100.0; //移動速度 重量
}


加上imageMode(CENTER);可讓滑鼠移動時在物件中心




加上加速度

PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
  imageMode(CENTER);
}
float marx=400, mary=300;
float marvx=0, marvy=0;
float marax=0, maray=0;
void draw(){
  background(255);
  image(img1,400,300,100,100);
  image(img0,marx,mary,100,100);
  line(marx,mary,400,300);
  marx +=marvx;
  mary +=marvy;
  marvx +=marax; //加速度
  marvy += marax; //加速度
}
void mouseDragged()
{
  marx=mouseX; mary=mouseY;
  marvx=marvy=marax=maray=0; //先歸0
}
void mouseReleased()
{
  marvx = (400-mouseX)/10.0;
  marvy = (400-mouseY)/10.0;
  maray= 0.98;
}




如果馬力歐碰到烏龜烏龜會消失

PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
  imageMode(CENTER);
}
float marx=400, mary=300;
float marvx=0, marvy=0;
float marax=0, maray=0;
float mar1x=700,mar1y=100; //幫烏龜設一個位置
boolean img1Alive=true; // 決定烏龜存在或消失
void draw(){
  background(255);
  if (img1Alive) image(img1,mar1x,mar1y,100,100); // 如果存在 烏龜位置
  image(img0,marx,mary,100,100);
  if (dist(mar1x,mar1y,marx,mary)<100) // 馬力歐碰到烏龜的區域
  {
    img1Alive=false; //碰到的話烏龜消失
  }
  marx +=marvx;
  mary +=marvy;
  marvx +=marax;
  marvy += maray;
}
void mouseDragged()
{
  marx=mouseX; mary=mouseY;
  marvx=marvy=marax=maray=0;
}
void mouseReleased()
{
  marvx = (400-mouseX)/10.0;
  marvy = (400-mouseY)/30.0;
  maray= 0.98;
}

讓瑪麗歐碰到邊界會反彈不會掉下去

PImage img0,img1;
void setup(){
  size(800,600);
  img0 = loadImage("Mario.png");
  img1 = loadImage("Mario1.png");
  imageMode(CENTER);
}
float marx=400, mary=300;
float marvx=0, marvy=0;
float marax=0, maray=0;
float mar1x=700,mar1y=100;
boolean img1Alive=true;
void draw(){
  background(255);
  if (img1Alive) image(img1,mar1x,mar1y,100,100);
  image(img0,marx,mary,100,100);
  if (dist(mar1x,mar1y,marx,mary)<100)
  {
    img1Alive=false;
  }
  marx +=marvx;
  mary +=marvy;
  if(marx<50){marx=50;marvx=-marvx;} //左右邊如果碰到邊界 速度=-速度(反彈)
  if(marx>width-50){marx=width-50;marvx=-marvx;}
  if(mary<50){mary=50;marvy=-marvy;} //上下邊界如果碰到邊界 速度=-速度(反彈)
  if(mary>height-50){mary=height-50;marvy=-marvy;}

  marvx += marax;
  marvy += maray;
  marvx *=0.995; //摩擦力
  marvy *=0.995; //摩擦力
}
void mouseDragged()
{
  marx=mouseX; mary=mouseY;
  marvx=marvy=marax=maray=0;
}
void mouseReleased()
{
  marvx = (400-mouseX)/10.0;
  marvy = (400-mouseY)/10.0;
  maray= 0.98;
}

做小朋友下樓梯

void setup()
{
  size(600,500);
}
int boardX=227,boardY=400;
int kidX=300,kidY=250;
void draw()
{
  background(0);
  rect(boardX,boardY,200,50);
  rect(kidX, kidY,50,50);
  
  if(kidX>boardX-50 && kidX<boardX+200 && kidY>boardY-50)
  {
           ///判斷有沒有碰到板子
  }
  else kidY++;
  kidX=mouseX; //用滑鼠移動
}

沒有留言:

張貼留言