import java.awt.Color;
import sk.upjs.jpaz2.*;
public class MojaTurtle extends Turtle {
/**
* Realizuje nahodnu pochodzku so zadanym poctom krokov a natacanim v
* nasobkoch uhla 90
*
* @param pocetKrokov
* pocet krokov, ktore ma korytnacka zrealizovat
*/
public void nahodnaPochodzkaKruh(int pocetKrokov) {
double startX = this.getX();
double startY = this.getY();
for (int i = 0; i < pocetKrokov; i++) {
// Vygenerujeme realne nahodne cislo z <0, 4). Orezanim desatinnej
// casti (pretypovanim)
// ziskame cele cislo medzi 0 a 3. Jeho vynasobenim cislom 90
// ziskame nahodny uhol
// natocenia, ktory je nasobkom 90
int uhol = 90 * (int) (Math.random() * 4);
// Otocime sa o zvoleny uhol (tu prebehne implicitne pretypovanie z
// int na double)
this.turn(uhol);
if (this.getX() < 150) {
this.setPenColor(Color.green);
} else {
this.setPenColor(Color.red);
}
this.step(10);
if (this.distanceTo(startX, startY) > 100) {
this.step(-10);
}
JPAZUtilities.delay(30);
}
this.setPosition(startX, startY);
}
/**
* Nakresli stvorcovu spiralu
*
* @return celkova dlzka krokov, ktore korytnacka zrealizovala
*/
public double stvorcovaSpirala() {
// Dlzka kroku, ktory mame najblizsie spravit
double krok = 150;
// V premennej prejdene si pamatame doposial prejdenu dlzku
double prejdene = 0;
// Opakujeme, kym je krok aspon 1 pixel (je ho vidiet)
while (krok >= 1) {
// Spravime krok
this.step(krok);
// Pridame si krok k prejdenej dlzke
prejdene = prejdene + krok;
this.turn(90);
// Znizime dlzku kroku o 10%
krok = 0.9 * krok;
JPAZUtilities.delay(50);
}
// Vratime ako vysledok volania metody aktualnu hodnotu v premennej
// prejdene
return prejdene;
}
/**
* To iste ako stvorcova spirala, ale na prerusenie (inak nekonecneho) while
* cyklu pouzijeme prikaz break
*/
public double stvorcovaSpirala2() {
double krok = 150;
double prejdene = 0;
while (true) {
this.step(krok);
prejdene += krok;
this.turn(90);
krok = 0.9 * krok;
JPAZUtilities.delay(50);
// Ak je krok uz prilis maly, tak prerusime cyklus
if (krok < 1) {
break;
}
}
return prejdene;
}
/**
* To iste ako stvorcova spirala, avsak metodu ukoncujeme vo vnutri
* nekonecneho while cyklu pomocou prikazu return
*/
public double stvorcovaSpirala3() {
double krok = 150;
double prejdene = 0;
while (true) {
this.step(krok);
prejdene += krok;
this.turn(90);
krok = 0.9 * krok;
JPAZUtilities.delay(50);
// Ak je uz krok prilis maly, tak ukoncime vykonavanie metody a
// vratime aktualnu hodnotu v premennej prejdene
if (krok < 1) {
return prejdene;
}
}
}
}