1.第一節上課
//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++;//往下滴(x,y)座標中,y慢慢變大,就是往下滴的感覺
}
}
void mouseDragged(){//要用右鍵拖曳,才會滴下噁心的水滴
if(mouseButton == LEFT)line(mouseX,mouseY,pmouseX,pmouseY);
if(mouseButton == RIGHT){
x = mouseX;
y = mouseY;
}
}
//week14_2_draw_lines_loadPixels_pixels_updatePixels
void setup(){
size(500,500);
background(255);//背景設成白色
}
void draw(){
//pixels
}
void mouseDragged(){
if(mouseButton==LEFT){//在左鍵dragged拖曳時
line(mouseX,mouseY,pmouseX,pmouseY);//本來的線,是灰黑色的,不是白色
loadPixels();//取出畫面的像素
//println(pixels[0]);//白色是-1 其實是color(255,255,255,255)
for(int i=0;i < width*height;i++){//全部的點,都去巡一下色彩
if(pixels[i] != -1)pixels[i] = color(random(255),random(255),random(255));
}//如果不是白色就是有畫圖碰到的pixels,都變成亂數的彩色
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(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();
}
2.第二節上課
//week14_04_draw_lines_rain_ArrayList_PVector_p_pp
PImage img;
void setup(){
size(500,500);
img = createImage(500,500,RGB);
}//換黑背景
ArrayList<PVector> p = new ArrayList<PVector>();
void draw(){
background(img);
//if(y<498 && img.pixels[x+y*500]==0)y++;
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));
}
}
//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();
color c1 = pixels[mouseX+mouseY*500];
color c2 = color(random(255),random(255),random(255));
myFloodFill(mouseX,mouseY,c1,c2);
updatePixels();
}
}
boolean isOK(int x,int y,color c){
if(x<0 || y<0|| x>=500||y>=500)return false;
if(pixels[x+y*500]!=c)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("i");
cursor(img);
//先畫淡黃色背景
}
void draw(){
background(#FFFFF2);
}
沒有留言:
張貼留言