2023年10月26日 星期四

學校滑鼠有夠爛 - Week07 - 互動技術🦆

 

Week07





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


-1




void setup(){
  size(400,400); 
}
float ghostX=400,ghostY=20;
void draw(){
  background(255);
  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);
}




-2




留下殘影
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,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(); 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);
}

-3




敵人靠近
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}

-4




橫線是紅色
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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、p.x差距,看p.y、p.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 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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}


-5


ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.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);//type2 藍色橫線
  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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}


-6


ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.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-p2.x > 0 && p2.y-p2.y > 0) rightdown++;
  }
  
  if(dpx > 100 && dpy < 40) stroke(255,0,0);//type1 紅色橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255);//type2 藍色橫線
  else if(rightdown > 30) stroke(0,255,0);//type3 的前半段,往右下 綠色線
  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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}
-7







ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.y差距
  float 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-p2.x > 0 && p2.y-p2.y > 0) rightdown += sqrt(dpx*dpx+dpy*dpy);
    ellipse(p.x, p.y, 10,10);
  }
  
  if(dpx > 100 && dpy < 40) stroke(255,0,0);//type1 紅色橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255);//type2 藍色橫線
  else if(rightdown > 150) stroke(0,255,0);//type3 的前半段,往右下 綠色線
  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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}


-8







ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.y差距
  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);//累積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(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 && rightdown>150) green_part1 = 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 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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}
- 9



ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.y差距
  float rightdown = 0, green_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);//累積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);
    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);//type1 紅色橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255);//type2 藍色直線
  else if(green_ok) stroke(0,255,0);//type3全部完成
  else if(green_part1) stroke(0,128,0);//type3 的前半段,往右下 暗綠色
  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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}
-10









黃色
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
  size(400,400);
  background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖曳
  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;//看p.x、p.x差距,看p.y、p.y差距
  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);//累積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_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);//type1 紅色橫線
  else if(dpx<40 && dpy>100) stroke(0,0,255);//type2 藍色直線
  else if(green_ok) stroke(0,255,0);//type3全部完成
  else if(green_part1) stroke(0,128,0);//type3 的前半段,往右下 暗綠色
  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);
  }
  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;
  println(dx, dy, len, ghostX, ghostY, frameRate);
}
void mouseReleased(){
  //background(255);
  for(int i=pt.size()-1; i>=0; i--){
    pt.remove(i);
  }
}
-
11

沒有留言:

張貼留言