2017年9月30日 星期六

Week03_是賴小沫的

✎跟著游標移動的圖及定點的圖

👀下載兩張去背png圖

將兩張圖匯入


👀將一張圖片放在固定的位置,另一張跟著游標移動

PImage imgEye,imgBear;  //宣告圖片變數
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");  //匯入圖片
  imgBear=loadImage("bear.png");
  //匯入圖片

}
void draw(){
  background(255);
 
image(imgBear,400,300);  //顯示圖片及位置
  image(imgEye,mouseX,mouseY);
  //顯示圖片及位置

}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;

}
按下左上角的三角形Ctrl+R,即可執行看結果

👀把兩張圖片調整到適中大小

PImage imgEye,imgBear;  //宣告圖片變數
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");  //匯入圖片
  imgBear=loadImage("bear.png"); 
//匯入圖片

}
void draw(){
  background(255);
 
image(imgBear,400,300,120,100);  //顯示圖片及位置大小
 
image(imgEye,mouseX,mouseY,100,100);  //顯示圖片及位置大小
}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
}

 按下左上角的三角形Ctrl+R,即可執行看結果

✎牛頓第一運動定律

PImage imgEye,imgBear;
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");
  imgBear=loadImage("bear.png");
}
float eyeX=400,eyeY=300;
float eyeVX=0,eyeVY=0;
void draw(){
  background(255);
  image(imgBear,bearX,bearY,120,100);
  image(imgEye,eyeX,eyeY,100,100);
  line(eyeX,eyeY,400,300);
  eyeX+=eyeVX;
  eyeY+=eyeVY;
}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
}
void mouseReleased(){  //滑鼠放開點擊
  eyeVX=(400-mouseX)/100.0;
  eyeVY=(300-mouseY)/100.0;

}
 按下左上角的三角形Ctrl+R,即可執行看結果

✎修改圖片原點位置

PImage imgEye,imgBear;
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");
  imgBear=loadImage("bear.png");
  imageMode(CENTER);  //將圖片的原點位置從左上角移至中心點
}
float eyeX=400,eyeY=300;
float eyeVX=0,eyeVY=0;
void draw(){
  background(255);
  image(imgBear,bearX,bearY,120,100);
  image(imgEye,eyeX,eyeY,100,100);
  line(eyeX,eyeY,400,300);
  eyeX+=eyeVX;
  eyeY+=eyeVY;
}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
}
void mouseReleased(){  //滑鼠放開點擊
  eyeVX=(400-mouseX)/100.0;
  eyeVY=(300-mouseY)/100.0;

}
 按下左上角的三角形Ctrl+R,即可執行看結果

✎牛頓第二運動定律

PImage imgEye,imgBear;
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");
  imgBear=loadImage("bear.png");
  imageMode(CENTER);
}
float eyeX=400,eyeY=300;
float eyeVX=0,eyeVY=0;
float eyeAX=0,eyeAY=0;
void draw(){
  background(255);
  image(imgBear,bearX,bearY,120,100);
  image(imgEye,eyeX,eyeY,100,100);
  line(eyeX,eyeY,400,300);
  eyeX+=eyeVX;
  eyeY+=eyeVY;

  eyeVX+=eyeAX;
  eyeVY+=eyeAY;

}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
  eyeVX=eyeVY=eyeAX=eyeAY=0; //將前一次的數值歸零
}
void mouseReleased(){
  eyeVX=(400-mouseX)/10.0;
  eyeVY=(300-mouseY)/10.0;
  eyeAY=0.98;  //將加速度重置回0.98
}
 按下左上角的三角形Ctrl+R,即可執行看結果

✎擊中目標物,目標物會消失

PImage imgEye,imgBear;
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");
  imgBear=loadImage("bear.png");
  imageMode(CENTER);
}
float eyeX=400,eyeY=300;
float eyeVX=0,eyeVY=0;
float eyeAX=0,eyeAY=0;
float bearX=650,bearY=200;
boolean bearAlive=true;
void draw(){
  background(255);
  if(bearAlive)image(imgBear,bearX,bearY,120,100);  //如果目標物存活,便畫出圖形
  image(imgEye,eyeX,eyeY,100,100);
  if(dist(bearX,bearY,eyeX,eyeY)<100)  //如果兩物的距離小於100,目標物就死亡
    bearAlive=false;

  line(eyeX,eyeY,400,300);
  eyeX+=eyeVX;
  eyeY+=eyeVY;
  eyeVX+=eyeAX;
  eyeVY+=eyeAY;
}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
  eyeVX=eyeVY=eyeAX=eyeAY=0;
}
void mouseReleased(){
  eyeVX=(400-mouseX)/10.0;
  eyeVY=(300-mouseY)/10.0;
  eyeAY=0.98;
}
 按下左上角的三角形Ctrl+R,即可執行看結果

✎攻擊物不會超出視窗且具有空氣阻力

PImage imgEye,imgBear;
void setup(){
  size(800,600);
  imgEye=loadImage("threeEyes.png");
  imgBear=loadImage("bear.png");
  imageMode(CENTER);
}
float eyeX=400,eyeY=300;
float eyeVX=0,eyeVY=0;
float eyeAX=0,eyeAY=0;
float bearX=650,bearY=200;
boolean bearAlive=true;
void draw(){
  background(255);
  if(bearAlive)image(imgBear,bearX,bearY,120,100);
  image(imgEye,eyeX,eyeY,100,100);
  if(dist(bearX,bearY,eyeX,eyeY)<100)
    bearAlive=false;
  line(eyeX,eyeY,400,300);
  eyeX+=eyeVX;
  eyeY+=eyeVY;

  //設定攻擊物可以移動的範圍
  if(eyeX<50) {eyeX=50; eyeVX=-eyeVX;}
  if(eyeX>width-50) {eyeX=width-50; eyeVX=-eyeVX;}
  if(eyeY<50) {eyeY=50; eyeVY=-eyeVY;}
  if(eyeY>height-50) {eyeY=height-50; eyeVY=-eyeVY;}

  eyeVX+=eyeAX;
  eyeVY+=eyeAY;

  //加上空氣阻力,使攻擊物會漸漸停下
  eyeVX*=0.99;
  eyeVY*=0.99;

}
void mouseDragged(){
  eyeX=mouseX;
  eyeY=mouseY;
  eyeVX=eyeVY=eyeAX=eyeAY=0;
}
void mouseReleased(){
  eyeVX=(400-mouseX)/10.0;
  eyeVY=(300-mouseY)/10.0;
  eyeAY=0.98;
}

 按下左上角的三角形Ctrl+R,即可執行看結果

✎小朋友下樓梯

void setup(){
  size(600,500);
}
int boardX=250,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){
    //touched the board
  }
  else kidY++;  //No touch the board
  kidX=mouseX;  //小朋友隨滑鼠左右移動
}
 按下左上角的三角形Ctrl+R,即可執行看結果

沒有留言:

張貼留言