package paz1a.task02;
import java.awt.Color;
import sk.upjs.jpaz2.*;
public class SmartTurtle extends Turtle {
public void circleWalk(int stepCount, double radius) {
double startX = this.getX();
double startY = this.getY();
double startDirection = this.getDirection();
for (int i = 0; i < stepCount; i++) {
// otocime sa o nahodny uhol <0,360)
this.turn(Math.random() * 360);
// spravime krok o velkost 5
this.step(5);
// do premennej si ulozime odpoved na otazku ci
// vzdialenost od pociatocnej pozicie korytnacky (startX,
// startY) je viac ako zadany polomer
boolean jeMimoDefinovanejOblasti = this.distanceTo(startX, startY) > radius;
// ak ano, korytnacka chod spat o velkost -5
if (jeMimoDefinovanejOblasti) {
this.step(-5);
}
}
this.setPosition(startX, startY);
this.setDirection(startDirection);
}
public void tripleCircleWalk(int stepCount, double radius) {
// ulozime si startovaciu poziciu korytnacky
double startX = this.getX();
double startY = this.getY();
double startDirection = this.getDirection();
for (int i = 0; i < stepCount; i++) {
// otocime sa o nahodny uhol z intervalu <0, 360)
this.turn(Math.random() * 360);
// je vzdialenost od pociatocnej pozicie <= radius/3
boolean bielaCast = this.distanceTo(startX, startY) <= (radius / 3);
// ak ano, zdvihni pero - nechceme kreslit
if (bielaCast) {
this.penUp();
} else {
// ak nie, daj dole - kreslime
this.penDown();
}
boolean modraCast = this.distanceTo(startX, startY) < (2 * radius / 3);
if (modraCast) {
this.setPenColor(Color.blue);
} else {
this.setPenColor(Color.red);
}
this.step(5);
// do premennej si ulozime odpoved na otazku ci
// vzdialenost od pociatocnej pozicie korytnacky (startX,
// startY) je viac ako zadany polomer
boolean jeMimoDefinovanejOblasti = this.distanceTo(startX, startY) > radius;
// ak ano, korytnacka chod spat o velkost -5
if (jeMimoDefinovanejOblasti) {
this.step(-5);
}
}
this.setPosition(startX, startY);
this.setDirection(startDirection);
}
public void squareWalk(int stepCount, double sideLength) {
double startX = this.getX();
double startY = this.getY();
double startDirection = this.getDirection();
for (int i = 0; i < stepCount; i++) {
// otocime sa o nahodny uhol z intervalu <0, 360)
this.turn(Math.random() * 360);
this.step(5);
boolean somVlavo = this.getX() < (startX - (sideLength / 2));
boolean somVpravo = this.getX() > (startX + (sideLength / 2));
boolean somNad = this.getY() < (startY - (sideLength / 2));
boolean somPod = this.getY() > (startY + (sideLength / 2));
boolean jeMimoDefinovanejOblasti = ((somVlavo || somVpravo) || (somNad || somPod));
if (jeMimoDefinovanejOblasti) {
this.step(-5);
}
}
this.setPosition(startX, startY);
this.setDirection(startDirection);
}
}