2024年12月9日 星期一

WEEK14-翁逸豪

 week14-1

//week14_01_draw_lines_void_mouseDragged_mouseButton_LEFT_RIGHT
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==RIGHT) {
    x=mouseX;
    y=mouseY;
  }
  
}
左鍵畫線右鍵畫水滴

week14-2

//week14_02_draw_lines_loadPixels_pixels_updatePixels
void setup(){
 size(500,500);
 background(255);
}
void draw(){
  
}
void mouseDragged(){
  if(mouseButton==LEFT){
    line(mouseX,mouseY,pmouseX,pmouseY);
    loadPixels();
    for(int i=0;i<width*height;i++){
      if(pixels[i]!=-1)pixels[i] = color(random(255),random(255),random(255));
    }
    updatePixels();
  } 
}
給線的每一格像素隨機顏色

week14-3

//week14_03_draw_lines_rain_PImage_createimage_img_loadPixels_pixels_updatePixels
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(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();
}
球中心碰到黑色(線)就停止下墜

week14-4

//week14_04_draw_lines_rain_ArratList_PVector_p_pp
PImage img;
void setup() {
  size(500, 500);
  img = createImage(500, 500, RGB);
}
//int x = 250,y = 0;
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++;
  }
  //if(y<498&&img.pixels[x+y*500]==-16777216) 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));
  }
}
球中心碰到線就停止下墜

week14-5

//week14_05_draw_lines_myFloodFill_x_y_c1_c2_pixels_isOK
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);
}
填框框(不能填太大,JAVA會死掉)

week14-6

//week14_06_cute_cursor
PImage c1,c2;
void setup(){
  size(500,500);
  c1 = loadImage("cursor1.png");
  c2 = loadImage("cursor2.png");
  cursor(c1);
}
void draw(){
  background(#FFFFF2);
  if(frameCount%120==0) cursor(c2);
  if(frameCount%120==60) cursor(c1);
}
換游標

week14-7

//week14_07_big_cursor
PImage c1,c2,imgCursor;
void setup(){
  size(500,500);
  c1 = loadImage("bigc1.png");
  c2 = loadImage("bigc2.png");
  imgCursor = c2;
}
void draw(){
  background(#FFFFF2);
  imageMode(CENTER);
  image(imgCursor,mouseX,mouseY);
  imageMode(CORNER);
  if(frameCount%120==0) imgCursor = c1;
  if(frameCount%120==60) imgCursor = c2;
}
換大游標


沒有留言:

張貼留言