2023年10月26日 星期四

Doing Nothing Losing Life Week07

    Week07



先寫出按下滑鼠畫線的程式


讓ghost往設定的位置移動(會看到殘影)


用ArrayList,讓殘影消失(目前還是畫點,待會要畫線)


畫線,滑鼠方開的時候迴圈倒過來


畫橫線到一定的長度會變成紅色,放開變回黑色並消失


畫直線變成藍色


畫斜線變成綠色(要畫慢一點)


將rightdown改成浮點數(方便做精確計算)


發明green_part1和green_ok 判斷如果又上等於和左上等於誰畫出綠色



判斷另一個方向畫黃色


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;
  //if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
  //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(p2.x - p.x > 0 && p2.y - p.y>0) rightdown+=sqrt(dpx*dpx+dpy*dpy);
    if(green_part1 && 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);//ellipse(p.x,p.y,3,3);
  }
  
  
  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--){ //到過來的for迴圈
    pt.remove(i);
  }
}















沒有留言:

張貼留言