Setac setac; void setup() { size(600,400); background(0); frameRate(30); smooth(); setac = new Setac(); } void draw() { background(0); setac.hodaj(); } class Setac { PVector pozicija; PVector brzina; PVector ubrzanje; float dimenzija; color boja; Setac() { dimenzija = 30 + random(10); pozicija = new PVector(dimenzija + random(width - 2* dimenzija), dimenzija + random(height - 2* dimenzija)); brzina = new PVector(-0.5 + random(1), - 0.5 + random(1)); ubrzanje = new PVector(-0.5 + random(1), - 0.5 + random(1)); int b = int(random(5)); if (b == 0) boja = color(255,219,172); else if (b == 1) boja = color(241,194,125); else if (b == 2) boja = color(224,172,105); else if (b == 3) boja = color(198,134,66); else if (b == 4) boja = color(141,85,36); } void nacrtaj(float xc, float yc, float r, float u) { ellipseMode(RADIUS); translate(xc, yc); rotate(u); stroke(0); strokeWeight(2); fill(boja); ellipse(0, 0, r, r); fill(255); ellipse(r/3, -r/2, r/3, r/3); ellipse(-r/3, -r/2, r/3, r/3); fill(boja); ellipse(0, -r, r/5, r/5); ellipse(r/2, -2*r/3, 2, 2); ellipse(-r/2, -r/2, 2, 2); } void hodaj(){ background(0); pozicija.add(brzina); brzina.add(ubrzanje); float u = 0; if (brzina.x != 0) { u = atan(brzina.y/brzina.x) + HALF_PI; if (brzina.x < 0) u += PI; } else if (brzina.y < 0) u = -HALF_PI; else u = HALF_PI; nacrtaj(pozicija.x, pozicija.y, dimenzija, u); if (abs(brzina.x) > 8) ubrzanje.x = -0.2 * brzina.x/abs(brzina.x); if (abs(brzina.y) > 6) ubrzanje.y = -0.2 * brzina.y/abs(brzina.y); int sudar = 0; if (pozicija.x > width-dimenzija) { pozicija.x = width - dimenzija; brzina.x = -brzina.x; sudar = 1; } if (pozicija.x < dimenzija) { pozicija.x = dimenzija; brzina.x = -brzina.x; sudar = 1; } if (pozicija.y > height-dimenzija) { pozicija.y = height - dimenzija; brzina.y = -brzina.y; sudar = 1; } if (pozicija.y < dimenzija) { pozicija.y = dimenzija; brzina.y = -brzina.y; sudar = 1; } if ((sudar == 1) || (frameCount % (10* frameRate) == 0)) ubrzanje = new PVector(-0.5 + random(1), - 0.5 + random(1)); } }