2024年12月9日 星期一

聽均一席話如聽一席話 Week014 11160712

 //week14_1_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_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_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);//-14
  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_draw_lines_rain_ArrayList_PVector_p_pp
PImage img;
void setup(){
  size(500,500);
  img =createImage(500,500,RGB);//用來畫圖的畫布
  img.loadPixels();
  
  img.updatePixels();
}//換黑背景
//int x=250,y=0;
ArrayList<PVector>p = new ArrayList<PVector>();//很多個點p
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_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();//把畫面讀入pixels[]陣列裡
     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);
}



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


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



//week14_8_big_cursor_imageMode_image_imageMode
PImage imgbigcute,imgbigkitty,imgCursor;
void setup(){
  size(500,500);
  imgbigcute = loadImage("bigcute.png");
  imgbigkitty = loadImage("bigkitty.png");
  imgCursor = imgbigkitty;
}
void draw(){
  background(#FFFFF2);
  imageMode(CENTER);
  image(imgCursor,mouseX,mouseY);
  imageMode(CENTER);
  if(frameCount%120==0)imgCursor = imgbigcute;
  if(frameCount%120==60)imgCursor = imgbigkitty;
}

沒有留言:

張貼留言