2023年10月26日 星期四

WEEK07

WEEK07


1.放開滑鼠即讓線消失












void setup(){
  size(400,400);
}
void draw(){
  if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
}
void mouseReleased(){
  background(255);
}

2.鬼會有殘影


 










void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void draw(){
  ellipse(200,200,15,15);
  if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  background(255);
}

3.有殘影的主角 可畫圖












ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255); 
 ellipse(200,200,15,15);
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size(); i++){
    PVector p = pt.get(i);
    ellipse(p.x,p.y,3,3);
  }
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  background(255);
}

4.到過來的for迴圈


ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
  ellipse(200,200,15,15);
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size(); i++){
    PVector p = pt.get(i);
    ellipse(p.x,p.y,3,3);
  }
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}


6.











ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
  ellipse(200,200,15,15);
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size()-1; i++){    

PVector p = pt.get(i), p2=pt.get(i+1);
    line(p.x,p.y,p2.x,p2.y);
  }
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}

7.可以變成紅色 
 
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
  ellipse(200,200,15,15); 
  ellipse(ghostX,ghostY,15,15);   //偷搬上來晚點才可以不會變紅色
  strokeWeight(4);
  float dpx=0, dpy=0; 
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
  }
  if(dpx>100 && dpy<40) stroke(255,0,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
 //background(255);
}

8.
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0, dpy=0; 
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
  }
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}

9.type3的前半段 rightdown

ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0, dpy=0; 
  int rightdown = 0;
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
    if(p2.x-p.x>0 && p2.y-p.y>0) rightdown++;
  }
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else if(rightdown>30) stroke(0,255,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}



10.
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);

}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0, dpy=0; 
  float rightdown = 0;
  int rightdown = 0;
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
    if(p2.x-p.x>0 && p2.y-p.y>0) rightdown+=sqrt(dpx*dpx+dpy*dpy);
  }
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else if(rightdown>30) stroke(0,255,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}



11.有錯










ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0, dpy=0; 
  float rightdown = 0,rightup=0;
  
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  boolean green_part1 = false, green_ok = false;
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
    if(p2.x-p.x>0 && p2.y-p.y>0) rightdown += sqrt(dpx*dpx+dpy*dpy);
    if(p2.x-p.x>0 && p2.y-p.y<0) rightup += sqrt(dpx*dpx+dpy*dpy);
    ellipse(p.x,p.y,10,10);
    if(green_part1==false && rightdown>150) green_part1 = true;
    else if(green_partl==true && rightup>150) green_ok = true;

  }
  println(rightdown);
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else if(rightdown>30) stroke(0,255,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}



12.










ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
 float dpx=0, dpy=0; 
  float rightdown = 0,green_rightup=0;
  
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  boolean green_part1 = false, green_ok = false;
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
    if(p2.x-p.x>0 && p2.y-p.y>0) rightdown += sqrt(dpx*dpx+dpy*dpy);
    if(green_part1 && p2.x-p.x>0 && p2.y-p.y<0) green_rightup += sqrt(dpx*dpx+dpy*dpy);
    ellipse(p.x,p.y,10,10);
    if(green_part1==false && rightdown>150) green_part1 = true;
    else if(green_part1==true && green_rightup>150) green_ok = true;
    
  }
  println(rightdown);
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else if(green_ok) stroke(0,255,0);
  else if(green_part1) stroke(0,128,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}


12.











ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
  pt.add(new PVector(mouseX,mouseY));
}
void draw(){
    background(255);
    strokeWeight(1);
    strokeWeight(0); ellipse(200,200,15,15);
    strokeWeight(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0, dpy=0; 
  float rightdown = 0,green_rightup=0;
  float rightup = 0, yellow_rightdown=0;
  //if(mousePressed) line(mouseX,mouseY,pmouseX, pmouseY);
  boolean green_part1 = false, green_ok = false;
  boolean yellow_part1 = false, yellow_ok = false;
  for(int i=0; i<pt.size()-1; i++){
    PVector p = pt.get(i), p2=pt.get(i+1);
    dpx += abs(p2.x - p.x);
    dpx += abs(p2.y - p.y);   
    if(p2.x-p.x>0 && p2.y-p.y>0) rightdown += sqrt(dpx*dpx+dpy*dpy);
    if(green_part1 && p2.x-p.x>0 && p2.y-p.y<0) green_rightup += sqrt(dpx*dpx+dpy*dpy);
    if(p2.x-p.x>0 && p2.y-p.y<0) rightup += sqrt(dpx*dpx+dpy*dpy);
    if(yellow_part1 && p2.x-p.x>0 && p2.y-p.y>0) yellow_rightdown += sqrt(dpx*dpx+dpy*dpy);
    //ellipse(p.x,p.y,10,10);
    if(green_part1==false && rightdown>150) green_part1 = true;
    else if(green_part1==true && green_rightup>150) green_ok = true;
    if(yellow_part1==false && rightup>150) yellow_part1 = true;
    else if(yellow_part1==true && yellow_rightdown>150) yellow_ok = true;    
  }
  println(rightdown);
  if(dpx>100 && dpy<40) stroke(255,0,0); //type 1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type 2 藍色的直線
  else if(green_ok) stroke(0,255,0);
  else if(green_part1) stroke(0,128,0);
  else stroke(0);
  for(int i=0; i<pt.size()-1; i++){
      PVector p = pt.get(i), p2=pt.get(i+1);
      line(p.x,p.y,p2.x,p2.y);
  }
  
  ellipse(ghostX,ghostY,15,15);
  float dx = 200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
  ghostX += dx / len / 3;
  ghostY += dy / len / 3;
}
void mouseReleased(){
  for(int i=pt.size()-1; i>=0; i--){ 
  pt.remove(i);
  }
  //background(255);
}













沒有留言:

張貼留言