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_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;
}
換大游標







沒有留言:
張貼留言