2023年10月12日 星期四

部落格Week05

 

第一堂課

  • 開啟新版的Processing

  • 新增檔案並輸入程式碼教出會跟著滑鼠動的方塊(3D的)

  void setup(){
  size(400,400,P3D);
 }
void draw(){
  background(#FFFFF2);
  pushMatrix();
  translate(mouseX,mouseY);
  box(100);
  popMatrix();
 }


  • 開新檔案輸入程式碼讓方塊能根據滑鼠移動進行旋轉
  • 修改程式碼使透明盒子包著綠色盒子
  void setup(){
  size(400,400,P3D);
 }
void draw(){
  background(#FFFFF2);
  pushMatrix();
  translate(mouseX,mouseY);
  rotateY(radians(mouseX));
  fill(0,255,0);
  box(100);
  
  noFill();
  scale(2);
  box(100);
  popMatrix();
 }

  • 開新檔案輸入程式碼叫出彩色的三角形

size(400,400,P3D);
beginShape();
fill(255,0,0);
vertex(200,0);
fill(0,255,0);
vertex(0,400);
fill(0,0,255);
vertex(400,400);
endShape();

第二堂課 


  • 新增檔案輸入程式碼用ArrayList(可大可小的陣列)來存畫的點

ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
  }
}
void mousePressed(){
  pt.add(new PVector(mouseX,mouseY));
}
  • 修改程式碼讓點能圈出圖形區域

ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
  }
  beginShape();
    for(PVector p : pt){
    vertex(p.x,p.y);
  }
  endShape();
}
void mousePressed(){
  pt.add(new PVector(mouseX,mouseY));
}
  • 新增檔案並輸入程式碼讓圈起來的區域可以用右鍵旋轉

ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  pushMatrix();
  if(mousePressed&&mouseButton==RIGHT){
  translate(200,200);
  rotateY(radians(frameCount));
  translate(-200,-200);
}
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
  }
  beginShape();
    for(PVector p : pt){
    vertex(p.x,p.y);
  }
  endShape();
  popMatrix();
}
void mousePressed(){
  if(mouseButton==LEFT){
  pt.add(new PVector(mouseX,mouseY));
}
}

第三堂課

  • 開新檔案輸入程式碼讓滑鼠左中右按鍵控制背景顏色
void setup(){
  size(400,400,P3D);
}
void draw(){
  background(255);
  if(mousePressed&&mouseButton==LEFT)background(255,0,0);
  if(mousePressed&&mouseButton==CENTER)background(0,255,0);
  if(mousePressed&&mouseButton==RIGHT)background(0,0,255);
}
  void mousePressed(){
    if(mouseButton==LEFT) println("LEFT");
    if(mouseButton==CENTER) println("CENTER");
    if(mouseButton==RIGHT) println("RIGHT");
  }
  • 開新檔案輸入程式碼讓被點的圓圈可以被選取


ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
  for(int i=0;i<20;i++){
    pt.add(new PVector(i*20,20));
}
}
void draw(){
  background(255);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
    }
    if(ans!=null)ellipse(ans.x,ans.y,15,15);
   }
PVector ans=null;
void mousePressed(){
  for(PVector p : pt){
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      ans=p;
    }
  }
}
  • 開新檔案並輸入程式碼讓中見可以拖曳點
ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
  for(int i=0;i<37;i++){
    pt.add(new PVector(random(400),random(400)));
}
}
void draw(){
  background(255);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
    }
    if(ans!=null)ellipse(ans.x,ans.y,15,15);
   }
PVector ans=null;
void mouseDragged(){
  if(mouseButton==CENTER&&ans!=null){
    ans.x=mouseX;
    ans.y=mouseY;
  }
}
    
void mousePressed(){
  if(mouseButton==LEFT)pt.add(new PVector(mouseX,mouseY));
  else if(mouseButton==CENTER){
  for(PVector p : pt){
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      ans=p;
    }
  }
}
}
  • 新增檔案輸入程式碼讓右鍵可以消除圈圈

ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
  for(int i=0;i<37;i++){
    pt.add(new PVector(random(400),random(400)));
}
}
void draw(){
  background(255);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
    }
    if(ans!=null)ellipse(ans.x,ans.y,15,15);
   }
PVector ans=null;
void mouseDragged(){
  if(mouseButton==CENTER&&ans!=null){
    ans.x=mouseX;
    ans.y=mouseY;
  }
}
    
void mousePressed(){
  if(mouseButton==LEFT)pt.add(new PVector(mouseX,mouseY));
  else if(mouseButton==CENTER){
  for(PVector p : pt){
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      ans=p;
    }
  }
}else if (mouseButton==RIGHT){
  for(int i=0;i<pt.size();i++){
    PVector p=pt.get(i);
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      pt.remove(i);
}
}
}
}

沒有留言:

張貼留言