2023年10月26日 星期四

week07咻消失

 week07

7-1
void setup(){
  size(400,400);
  background(255);
}
void draw(){
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}
void mouseReleased(){  
  background(255); //滑鼠放開背景變白
}  
7-2
void setup(){
  size(400,400);
}
float ghostX=40, 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);
}
7-3
ArrayList<PVector> pt = new ArrayList<PVector>();///資料結構
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, 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);
}
7-4 ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  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(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);
  for(int i=pt.size()-1; i>=0; i--){//倒過來的for迴圈
    pt.remove(i);
  }
}
畫完線放開滑鼠線會消失



7-5 ArrayList<PVector> pt = new ArrayList<PVector>();///資料結構
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, 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;///要看p.x p2.x的差距, p.y p2.y的差距
  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);//累積x的移動量
    dpy += abs(p2.y - p.y);//累積y的移動量
  }
  if(dpx>100 && dpy<40) stroke(255,0,0);///超過了長度100type1紅色的橫線
  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--){///到過來的for迴圈
    pt.remove(i);
  }
}
7-6
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  pt.add(new PVector(mouseX,mouseY));
}  
  void draw(){
  background(255); 
  ellipse(200,200,15,15);
  strokeWeight(0);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;//要看p.x p2.x的差距,p.y p2.y的差距
  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);//累積x的移動量
    dpy += abs(p2.y-p.y);//累積y的移動量
  }
  if(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
  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);
  }
}
7-7
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  pt.add(new PVector(mouseX,mouseY));
}  
  void draw(){
  background(255); 
  ellipse(200,200,15,15);
  strokeWeight(0);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;//要看p.x p2.x的差距,p.y p2.y的差距
  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);//累積x的移動量
    dpy += abs(p2.y-p.y);//累積y的移動量
    if(p2.x-p.x >0 && p2.y-p.y>0) rightdown++;
  }
  if(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
  else if(rightdown>20) stroke(0,255,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);
  }
}

7-8
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  pt.add(new PVector(mouseX,mouseY));
}  
  void draw(){
  background(255); 
  ellipse(200,200,15,15);
  strokeWeight(0);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;//要看p.x p2.x的差距,p.y p2.y的差距
  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);//累積x的移動量
    dpy += abs(p2.y-p.y);//累積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); //type1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
  else if(rightdown>150) stroke(0,255,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);
  }
}
7-9
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  pt.add(new PVector(mouseX,mouseY));
}  
  void draw(){
  background(255); 
  ellipse(200,200,15,15);
  strokeWeight(0);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;//要看p.x p2.x的差距,p.y p2.y的差距
  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);//累積x的移動量
    dpy += abs(p2.y-p.y);//累積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); //type1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
  else if(rightdown>150) stroke(0,255,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);
  }
}
7-A
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
  pt.add(new PVector(mouseX,mouseY));
}  
  void draw(){
  background(255); 
  ellipse(200,200,15,15);
  strokeWeight(0);
  stroke(0); ellipse(200,200,15,15);
  stroke(0); ellipse(ghostX,ghostY,15,15);
  strokeWeight(4);
  float dpx=0,dpy=0;//要看p.x p2.x的差距,p.y p2.y的差距
  float rightdown = 0 ,green_rightup = 0 ;//往右下,往右上3
  float rightup = 0 ,yellow_rightup = 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);//累積x的移動量
    dpy += abs(p2.y-p.y);//累積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_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;
    if(yellow_part1==false && rightdown>150) yellow_part1 = true;
    else if(yellow_part1==true && yellow_rightup>150) yellow_ok = true;
  }
  println(rightdown);
  if(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255); //type2 藍色的直線
  else if(green_ok) stroke(0,255,0);//type3 綠色
  else if(yellow_ok) stroke(255,255,0);//type4 黃色
  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);
  }
}

  

  
  
  
  




沒有留言:

張貼留言