import java.awt.Color;
import sk.upjs.jpaz2.*;
public class MojaKorytnacka extends Turtle {
public void pochodzkaKruh(int pocetKrokov, double polomer) {
double sx = getX(), sy = getY();
int pocitadlo = 0;
for (int i = 0; i < pocetKrokov; i++) {
// podmienky na zmenu farby pera
if (pocitadlo == 100) {
setPenColor(Color.red);
} else if (pocitadlo == 182) {
setPenColor(Color.green);
} else if (pocitadlo == 304) {
setPenColor(Color.blue);
pocitadlo = 0;
}
this.turn(Math.random() * 360);
this.step(5);
if (distanceTo(sx, sy) > polomer) {
this.step(-5);
}
pocitadlo++;
}
}
public void pochodzkaTrojkruh(int pocetKrokov, double polomer) {
double sx = getX(), sy = getY();
double polomer1 = polomer / 3;
double polomer2 = 2 * polomer / 3;
for (int i = 0; i < pocetKrokov; i++) {
double vzdialenostOdStredu = distanceTo(sx, sy);
if (vzdialenostOdStredu <= polomer1) {
penUp();
} else if (vzdialenostOdStredu <= polomer2) {
setPenColor(Color.blue);
} else {
setPenColor(Color.red);
}
this.turn(Math.random() * 360);
this.step(5);
if (distanceTo(sx, sy) > polomer) {
this.step(-5);
}
penDown();
}
}
public void pochodzkaStvorec(int pocetKrokov, double strana) {
double lavyX = getX() - strana / 2;
double lavyY = getY() - strana / 2;
for (int i = 0; i < pocetKrokov; i++) {
this.turn(Math.random() * 360);
this.step(5);
double x = getX(), y = getY();
boolean vyhovujeX = x >= lavyX && x <= lavyX + strana;
boolean vyhovujeY = y >= lavyY && y <= lavyY + strana;
if (!(vyhovujeX && vyhovujeY)) {
this.step(-5);
}
}
}
public void pochodzkaObdlznik(int pocetKrokov, double vyska, double sirka) {
double lavyX = getX() - sirka / 2;
double lavyY = getY() - vyska / 2;
for (int i = 0; i < pocetKrokov; i++) {
this.turn(Math.random() * 360);
this.step(5);
double x = getX(), y = getY();
boolean vyhovujeX = x >= lavyX && x <= lavyX + sirka;
boolean vyhovujeY = y >= lavyY && y <= lavyY + vyska;
if (!(vyhovujeX && vyhovujeY)) {
this.step(-5);
}
}
}
public void moderneUmenie(int pocetBodiek, double sirka, double vyska) {
double lavyX = getX(), lavyY = getY();
double natocenie = getDirection();
// kreslime obdlznik - ram
setDirection(90);
obdlznik(sirka, vyska);
// kreslime bodky
for (int i = 0; i < pocetBodiek; i++) {
// generujem nahodny polomer od 2 po 7 (otvoreny)
double polomer = 2 + Math.random() * 5;
// generujem nahodne suradnice stredu bodky tak, aby cela
// ostala v rame
double x = lavyX + polomer + Math.random() * (sirka - 2 * polomer);
double y = lavyY + polomer + Math.random() * (vyska - 2 * polomer);
// generujem nahodnu farbu pera (bud modra alebo cervena)
if (Math.random() < 0.5) {
setFillColor(Color.red);
} else {
setFillColor(Color.blue);
}
setPosition(x, y);
dot(polomer);
}
setPosition(lavyX, lavyY);
setDirection(natocenie);
}
public void obdlznik(double sirka, double vyska) {
for (int i = 0; i < 4; i++) {
if (i % 2 == 0)
step(sirka);
else
step(vyska);
turn(90);
}
}
public void nahodnaFarbaPera() {
int r = (int) (Math.random() * 256);
int g = (int) (Math.random() * 256);
int b = (int) (Math.random() * 256);
// int rgb = (int)(Math.random() * 256*256*256);
Color farba = new Color(r, g, b);
// Color farba = new Color(rgb);
setPenColor(farba);
}
}