2023年10月26日 星期四

week07

 畫線(但會消失)

void setup(){

  size(400,400);

}

void draw(){

  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);

}

void mouseReleased(){

  background(255);

}



加了移動的小球(但有軌跡)
void setup(){
  size(400,400);
}
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);
}



移動小球沒有軌跡 
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(){
  //background(255);
  for(int i=pt.size()-1;i>=0;i--){
    pt.remove(i);
  }
}

void draw(){
  background(255);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=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);
    dpy += abs(p2.y-p.y);
  }
  if(dpx>100&&dpy<40) stroke(255,0,0);
  else stroke(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);
    line(p.x,p.y,p2.x,p2.y);
  }
增加藍線跟綠線(但勾勾有問題)

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);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;
  float rightdown=0 , rightup =0;
  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);
    dpy += 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_part1==true && rightup>150) green_ok =true;
  }
  
  if(dpx>100&&dpy<40) stroke(255,0,0);
  else if(dpx<40&&dpy>100) stroke(0,0,255);
  else if(green_ok) 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);
  }
  
  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);
  for(int i=pt.size()-1;i>=0;i--){
    pt.remove(i);
  }
}

(最終結果)

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);
  stroke(0); ellipse(200,200,15,15);
  stroke(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;
  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);
    dpy += 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;
  }
  
  if(dpx>100&&dpy<40) stroke(255,0,0);
  else if(dpx<40&&dpy>100) stroke(0,0,255);
  else if(green_ok) stroke(0,255,0);
  else if(yellow_ok) stroke(255,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);
  }
  
  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);
  for(int i=pt.size()-1;i>=0;i--){
    pt.remove(i);
  }
}





沒有留言:

張貼留言