Upload
gene-kao
View
212
Download
0
Embed Size (px)
Citation preview
Processing
15
Object-Oriented物件導向
Object-Oriented
float x, y;int rad = 10;
void setup () { size(300,300); x = 150; y = 150; frameRate(50);}
void draw() { background(255); ellipse(x,y,rad,rad); rad ++;}
Ring R1, R2, R3;
void setup () { size(300,300); noFill();
R1 = new Ring(); R2 = new Ring(); R3 = new Ring();
R1.x = 100; R1.y = 150; R1.r = 10; R2.x = 150; R2.y = 150; R2.r = 20; R3.x = 200; R3.y = 150; R3.r = 30;}
class Ring { float x, y, r; void display () { ellipse(x,y,r,r); } void move () { r++; } }
void draw() { background(255); R1.move(); R1.display(); R2.move(); R2.display(); R3.move(); R3.display();}
Ring R1, R2, R3;
void setup () { size(300,300); noFill(); R1 = new Ring(100,150,10); R2 = new Ring(150,150,20); R3 = new Ring(200,150,30);}
void draw() { background(255); R1.move(); R1.display(); R2.move(); R2.display(); R3.move(); R3.display();}
class Ring { float x, y, r; Ring(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } // Constructor
void display () { ellipse(x,y,r,r); } void move () { r++; } }
Ring[] Rs;int numRs = 10;int currentR = 0;void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); Rs[i].start(random(300),random(300),random(1,30)); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
class Ring { float x, y, r; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void display () { ellipse(x,y,r,r); } void move () { r++; } }
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); Rs[i].start(random(300),random(300),random(1,30)); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
class Ring { float x, y, r; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void display () { ellipse(x,y,r,r); } void move () { r++; } } Whole Program
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(0,0,0); Rs[i].start (random(300),random(300),random(1,30)); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
class Ring { float x, y, r; Ring(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void display () { ellipse(x,y,r,r); } void move () { r++; } }
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); smooth(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
void mousePressed() { Rs[currentR].start(mouseX,mouseY,1); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { if (r <= 50) {r+=0.25;} else {r=1;} } } Whole Program
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}void mousePressed() { Rs[currentR].start(mouseX,mouseY,1); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { r++; } }
Whole Program
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}void mousePressed() { Rs[currentR].start(mouseX,mouseY,1); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { r++; } }
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); smooth(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
void mousePressed() { Rs[currentR].start(mouseX,mouseY,1); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { if (r <= 50) {r+=0.25;} else {r=1;} } }
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); smooth(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
void mousePressed() { Rs[currentR].start(mouseX,mouseY,1); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { if (r <= 50) {r+=0.25;} else {r=1;} } }
Whole Program
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); smooth(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); } frameRate(5);}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
void mousePressed() { Rs[currentR].start(mouseX,mouseY,20,0); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; float ang; void start(float xpos, float ypos, float radius, float a) { x = xpos; y = ypos; r = radius; ang = 0; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { x = x + r * cos(ang); y = y + r * sin(ang); ang ++; } }
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); smooth(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(); } frameRate(5);}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
void mousePressed() { Rs[currentR].start(mouseX,mouseY,20,0); currentR ++; if (currentR >= numRs) {currentR = 0;}}
class Ring { float x, y, r; boolean on = false; float ang; void start(float xpos, float ypos, float radius, float a) { x = xpos; y = ypos; r = radius; ang = 0; on = true; } void display () { if (on == true) {ellipse(x,y,r,r);} } void move () { x = x + r * cos(ang); y = y + r * sin(ang); ang ++; } }
Whole Program
Ring[] Rs;int numRs = 10;int currentR = 0;
void setup () { size(300,300); noFill(); Rs = new Ring[numRs]; for (int i = 0; i < numRs; i++) { Rs[i] = new Ring(0,0,0); Rs[i].start (random(300),random(300),random(1,30)); }}
void draw() { background(255); for (int i = 0; i < numRs; i++) { Rs[i].move(); Rs[i].display(); }}
class Ring { float x, y, r; Ring(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void start(float xpos, float ypos, float radius) { x = xpos; y = ypos; r = radius; } void display () { ellipse(x,y,r,r); } void move () { r = mouseX-mouseY; } }
float x = 33;float y = 50;float diameter = 30;
void setup() { size(100, 100); smooth(); noStroke();}void draw() { background(0); ellipse(x, y, diameter, diameter);}
Spot sp; // Declare the object
void setup() { size(100, 100); smooth(); noStroke(); sp = new Spot(); // Construct the object sp.x = 33; // Assign 33 to the x field sp.y = 50; // Assign 50 to the y field sp.diameter = 30; // Assign 30 to the diameter field}
void draw() { background(0); ellipse(sp.x, sp.y, sp.diameter, sp.diameter);}
class Spot { float x, y; // The x- and y-coordinate float diameter; // Diameter of the circle}
Structure 4: Objects ITextbook P.395.
Spot sp; // Declare the object
void setup() { size(100, 100); smooth(); noStroke(); sp = new Spot(); // Construct the object sp.x = 33; // Assign 33 to the x field sp.y = 50; // Assign 50 to the y field sp.diameter = 30; // Assign 30 to the diameter field}
void draw() { background(0); ellipse(sp.x, sp.y, sp.diameter, sp.diameter);}
class Spot { float x, y; // The x- and y-coordinate float diameter; // Diameter of the circle}
Spot sp; // Declare the object
void setup() { size(100, 100); smooth(); noStroke(); sp = new Spot(); // Construct the object sp.x = 33; // Assign 33 to the x field sp.y = 50; // Assign 50 to the y field sp.diameter = 30; // Assign 30 to the diameter field}
void draw() { background(0); sp.display();}
class Spot { float x, y, diameter; void display() { ellipse(x, y, diameter, diameter); }}
Program from last page.
Spot sp; // Declare the object
void setup() { size(100, 100); smooth(); noStroke(); // Construct the object sp = new Spot(33, 50, 30, 1.5);}
void draw() { fill(0, 15); rect(0, 0, width, height); fill(255); sp.move(); sp.display();}
1/2
// Insert Spot classclass Spot { float x, y; // X-coordinate, y-coordinate float diameter; // Diameter of the circle float speed; // Distance moved each frame int direction = 1; // Direction of motion (1 is down, -1 is up) // Constructor
Spot(float xpos, float ypos, float dia, float sp) { x = xpos; y = ypos; diameter = dia; speed = sp; }
void move() { y += (speed * direction); if ((y > (height - diameter/2)) || (y < diameter/2)) { direction *= -1; } } void display() { ellipse(x, y, diameter, diameter); }} 2/2
Spot sp; // Declare the object
void setup() { size(100, 100); smooth(); noStroke(); // Construct the object sp = new Spot(33, 50, 30, 1.5);}
void draw() { fill(0, 15); rect(0, 0, width, height); fill(255); sp.move(); sp.display();}
// Insert Spot classclass Spot { float x, y; // X-coordinate, y-coordinate float diameter; // Diameter of the circle float speed; // Distance moved each frame int direction = 1; // Direction of motion (1 is down, -1 is up) // Constructor Spot(float xpos, float ypos, float dia, float sp) { x = xpos; y = ypos; diameter = dia; speed = sp; }
void move() { y += (speed * direction); if ((y > (height - diameter/2)) || (y < diameter/2)) { direction *= -1; } } void display() { ellipse(x, y, diameter, diameter); }}
Whole Program
Spot sp1, sp2, sp3; // Declare the objects
void setup() { size(100, 100); smooth(); noStroke(); sp1 = new Spot(20, 50, 40, 0.5); // Construct sp1 sp2 = new Spot(50, 50, 10, 2.0); // Construct sp2 sp3 = new Spot(80, 50, 30, 1.5); // Construct sp3}
void draw() { fill(0, 15); rect(0, 0, width, height); fill(255); sp1.move(); sp2.move(); sp3.move(); sp1.display(); sp2.display(); sp3.display();}
Spot sp1, sp2, sp3; // Declare the objects
void setup() { size(100, 100); smooth(); noStroke(); sp1 = new Spot(20, 50, 40, 0.5); // Construct sp1 sp2 = new Spot(50, 50, 10, 2.0); // Construct sp2 sp3 = new Spot(80, 50, 30, 1.5); // Construct sp3}
void draw() { fill(0, 15); rect(0, 0, width, height); fill(255); sp1.move(); sp2.move(); sp3.move(); sp1.display(); sp2.display(); sp3.display();}
// Insert Spot classclass Spot { float x, y; // X-coordinate, y-coordinate float diameter; // Diameter of the circle float speed; // Distance moved each frame int direction = 1; // Direction of motion (1 is down, -1 is up) // Constructor Spot(float xpos, float ypos, float dia, float sp) { x = xpos; y = ypos; diameter = dia; speed = sp; }
void move() { y += (speed * direction); if ((y > (height - diameter/2)) || (y < diameter/2)) { direction *= -1; } } void display() { ellipse(x, y, diameter, diameter); }} Whole Program
Addsp4sp5
color
int numSpots = 6;// Declare and create the arraySpot[] spots = new Spot[numSpots];
void setup() { size(100, 100); smooth(); noStroke(); for (int i = 0; i < spots.length; i++) { float x = 10 + i*16; float rate = 0.5 + i*0.05; // Create each object spots[i] = new Spot(x, 50, 16, rate); }}
void draw() { fill(0, 12); rect(0, 0, width, height); fill(255); for (int i = 0; i < spots.length; i++) { spots[i].move(); // Move each object spots[i].display(); // Display each object }}
int numSpots = 6;// Declare and create the arraySpot[] spots = new Spot[numSpots];
void setup() { size(100, 100); smooth(); noStroke(); for (int i = 0; i < spots.length; i++) { float x = 10 + i*16; float rate = 0.5 + i*0.05; // Create each object spots[i] = new Spot(x, 50, 16, rate); }}
void draw() { fill(0, 12); rect(0, 0, width, height); fill(255); for (int i = 0; i < spots.length; i++) { spots[i].move(); // Move each object spots[i].display(); // Display each object }}
// Insert Spot classclass Spot { float x, y; // X-coordinate, y-coordinate float diameter; // Diameter of the circle float speed; // Distance moved each frame int direction = 1; // Direction of motion (1 is down, -1 is up) // Constructor Spot(float xpos, float ypos, float dia, float sp) { x = xpos; y = ypos; diameter = dia; speed = sp; }
void move() { y += (speed * direction); if ((y > (height - diameter/2)) || (y < diameter/2)) { direction *= -1; } } void display() { ellipse(x, y, diameter, diameter); }} Whole Program
eye e;
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); e = new eye(); e.x = 500; e.y = 300; e.d = 100;}
void draw () { background(255); e.display();}
class eye { float x,y,d; // d for diameter void display() { translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10)+(d/10),d/10,d/5); }}
eye e;
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); e = new eye(); e.x = 500; e.y = 300; e.d = 100;}
void draw () { background(255); e.display();}
class eye { float x,y,d; // d for diameter void display() { translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10)+(d/10),d/10,d/5); }}
Whole Program
int n = 10;eye[] e = new eye[n];
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); for (int i = 0; i< e.length; i++) { e[i] = new eye(50+100*i,50,100,10); }}
void draw () { background(255); for (int i = 0; i < e.length; i++) { e[i].display(); }} 1/2
class eye { float x,y,d,sp; // d for diameter eye(float xpos,float ypos,float diameter,float speed) { x = xpos; y = ypos; d = diameter; sp = speed; } void display() { pushMatrix(); translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10)+(d/10),d/10,d/5); popMatrix(); }}
2/2
int n = 10;eye[] e = new eye[n];
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); for (int i = 0; i< e.length; i++) { e[i] = new eye(50+100*i,50,100,10); }}
void draw () { background(255); for (int i = 0; i < e.length; i++) { e[i].display(); }}
class eye { float x,y,d,sp; // d for diameter eye(float xpos,float ypos,float diameter,float speed) { x = xpos; y = ypos; d = diameter; sp = speed; } void display() { pushMatrix(); translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/5),(mouseY-y)/(d/10)+(d/10),d/10,d/5); popMatrix(); }} Whole Program
int n = 10;eye[] e = new eye[n];
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); for (int i = 0; i< e.length; i++) { e[i] = new eye(50+100*i,50,100,0.2+0.2*i); }}
void draw () { background(255); fill(0); for (int i = 0; i < e.length; i++) { e[i].moving(); e[i].display(); }}
1/3
class eye { float x,y,d,sp; // d for diameter int direction = 1; eye(float xpos,float ypos,float dia,float speed) { x = xpos; y = ypos; d = dia; sp = speed; } void moving() { y += (sp * direction); if ((y > (height - d / 2.0)) || (y < (d / 2.0))) { direction *= -1; } }
2/3
void display() { pushMatrix(); translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/3),(mouseY-y)/(d/3),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/3),(mouseY-y)/(d/3)+(d/10),d/10,d/5); popMatrix(); }}
3/3
int n = 10;eye[] e = new eye[n];
void setup () { size(1000,600); ellipseMode(CENTER); smooth(); for (int i = 0; i< e.length; i++) { e[i] = new eye(50+100*i,50,100,0.2+0.2*i); }}
void draw () { background(255); fill(0); for (int i = 0; i < e.length; i++) { e[i].moving(); e[i].display(); }}
class eye { float x,y,d,sp; // d for diameter int direction = 1; eye(float xpos,float ypos,float dia,float speed) { x = xpos; y = ypos; d = dia; sp = speed; } void moving() { y += (sp * direction); if ((y > (height - d / 2.0)) || (y < (d / 2.0))) { direction *= -1; } } void display() { pushMatrix(); translate(x,y); fill(0); ellipse(0,0,d,d); fill(255); ellipse((mouseX-x)/(d/3),(mouseY-y)/(d/3),d/2,d/2); fill(0); ellipse((mouseX-x)/(d/3),(mouseY-y)/(d/3)+(d/10),d/10,d/5); popMatrix(); }}
Whole Program