It's possible to nest loops inside other loops.
Hier is an example with a built-in Screen Shot-function
void setup() { size(600,600); strokeWeight(1); } void draw() { background(255); // def. background colour for(int x = 0; x <= width; x+=30) { for(int y = 0; y <= height; y+=30) { smiley(x,y); } } } void keyPressed() { if(key == 's') { save("screenShot.jpg"); println("save the screen to screenShot.jpg"); } } // function void smiley(int x, int y) { noFill(); ellipse(x,y,18,18); // head fill(0); ellipse(x - 3,y - 3,2,5); // left eye ellipse(x + 3,y - 3,2,5); // right eye noFill(); arc(x,y,10,10,radians(20),radians(180-20)); // mouth }
This example doesn't have a screen output, it generates a PDF-File instead.
import processing.pdf.*; void setup() { size(600,600,PDF,"ornament.pdf"); // def. output resolution strokeWeight(1); // line thickness } void draw() { background(255); // def. background colour for(int x = 0; x <= width; x+=30) { for(int y = 0; y <= height; y+=30) { smiley(x,y); // funtion call } } exit(); } // function void smiley(int x, int y) { println("smiley"); noFill(); ellipse(x,y,18,18); // head fill(0); ellipse(x - 3,y - 3,2,5); // left eye ellipse(x + 3,y - 3,2,5); // right eye noFill(); arc(x,y,10,10,radians(20),radians(180-20)); // mouth }