2024年12月9日 星期一

Week14 ㄎㄎㄎㄎㄎㄎㄎㄎㄎㄎㄎㄎ

 week14 畫圖&滑鼠

14_1(畫線下降)

//week14_01_draw_lines_mouse
void setup(){
  size(500,500);
}
int x =-1,y = -1;
void draw(){
  if(x != -1){
    ellipse(x,y,1,1);
    y++;
  }
}
void mouseDragged(){
  if(mouseButton == LEFT)line(mouseX,mouseY,pmouseX,pmouseY);
  if(mouseButton == LEFT){
    x = mouseX;
    y = mouseY;
  }
}


14_2(彩線)

//week14_02_many_xy_Pixels
void setup(){
  size(500,500);
  background(255);
}

void draw(){
  
}
void mouseDragged(){
  if(mouseButton == LEFT){
    line(mouseX,mouseY,pmouseX,pmouseY);
    loadPixels();
    println(pixels[0]);
    for(int i=0; i<width*height;i++){
      if(pixels[i] != -1) pixels[i] = color(random(255),random(255),random(255));
    }
  updatePixels();
  }
}


14_3(線接球)

//week14_03_draw_lines_rain_update
PImage img;
void setup() {
  size(500, 500);
  img = createImage(500, 500, RGB);
  img.loadPixels();
  for (int i=0; i<500*500; i++) img.pixels[i] = color(#FFFFF2);
  img.updatePixels();
}
int x = 250, y = 0;
void draw() {
  background(img);
  ellipse(x, y, 20, 20);
  if (y<498 && img.pixels[x+y*500] == -14) y++;
}
void mouseDragged() {
  background(img);
  line(mouseX, mouseY, pmouseX, pmouseY);
  loadPixels();
  img.loadPixels();
  for (int i=0; i<500*500; i++) img.pixels[i] = pixels[i];
  img.updatePixels();
  updatePixels();
}


14_4(生成球接)

//week14_04_draw_lines_rain_ArrayList
PImage img;
void setup() {
  size(500, 500);
  img = createImage(500, 500, RGB);
}

ArrayList<PVector> p = new ArrayList<PVector>();
void draw() {
  background(img);
  for (PVector pp : p) {
    ellipse(pp.x, pp.y, 20, 20);
    if (pp.y<498 && img.pixels[int(pp.x)+int(pp.y)*500] == -16777216) pp.y++;
  }
}

void mouseDragged() {
  background(img);
  stroke(random(255), random(255), random(255));
  line(mouseX, mouseY, pmouseX, pmouseY);
  loadPixels();
  img.loadPixels();
  for (int i=0; i<500*500; i++) img.pixels[i] = pixels[i];
  img.updatePixels();
  updatePixels();
  for (PVector pp : p) {
    ellipse(pp.x, pp.y, 20, 20);
  }
}
void mousePressed() {
  if (mouseButton==RIGHT) {
    p.add( new PVector(mouseX, mouseY));
  }
}


14_5(畫線填色(不能太大))

//week14_05_drawline_fillcolor
void setup() {
  size(500, 500);
  background(#FFFFF2);
}
void draw() {
  if (mousePressed && mouseButton == LEFT) line(mouseX, mouseY, pmouseX, pmouseY);
  if (mousePressed && mouseButton == RIGHT) {
    loadPixels();
    color c1 = pixels[mouseX+mouseY*500];
    color c2 = color(random(255), random(255), random(255));
    if (c1!=c2) myFloodFill(mouseX, mouseY, c1, c2);
    updatePixels();
  }
}
boolean isOK(int x, int y, color c1) {
  if (x<0 || y<0 || x>=500 || y>=500) return false;
  if (pixels[x+y*500] != c1) return false;
  return true;
}
void myFloodFill(int x, int y, color c1, color c2) {
  pixels[x+y*500] = c2;
  if (isOK(x+1, y, c1)) myFloodFill(x+1, y, c1, c2);
  if (isOK(x-1, y, c1)) myFloodFill(x-1, y, c1, c2);
  if (isOK(x, y+1, c1)) myFloodFill(x, y+1, c1, c2);
  if (isOK(x, y-1, c1)) myFloodFill(x, y-1, c1, c2);
}


14_6(滑鼠)

//week14_06_mouse
void setup() {
  size(500, 500);
  PImage img = loadImage("kitty.png");
  cursor(img);
}
void draw() {
  background(#FFFFF2);
}

14_7(滑鼠自動切換)

//week14_07_mouse_timechange
PImage img1,img2;
void setup() {
  size(500, 500);
  img1 = loadImage("kitty.png");
  img2 = loadImage("cute.png");
  cursor(img1);
}
void draw() {
  background(#FFFFF2);
  if(frameCount%120==0) cursor(img1);
  if(frameCount%120==60) cursor(img2);
}

沒有留言:

張貼留言