import java.awt.Color;
import sk.upjs.jpaz2.*;
public class MojaKorytnacka 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;
                        }
                }
        }
        public void zvolNahodneFarbu() {
                Color c = new Color((int) (Math.random() * 256),
                                (int) (Math.random() * 256), (int) (Math.random() * 256));
                this.setPenColor(c);
        }
        public void sustredneKruhy(double polomer) {
                int pocetKruhov = 0;
                double obsah = 0;
                while (polomer > 10) {
                        pocetKruhov++;
                        obsah = obsah + Math.PI * polomer* polomer;
                        if (pocetKruhov % 3 == 0) {
                                this.setFillColor(Color.red);
                        }
                        if (pocetKruhov % 3 == 1) {
                                this.setFillColor(Color.blue);
                        }
                        if (pocetKruhov % 3 == 2) {
                                this.setFillColor(Color.gray);
                        }
                        this.dot(polomer);
                        polomer = 0.8 * polomer;
                }
                System.out.println("pocet kruhov: " + pocetKruhov);
                System.out.println("obsah kruhov: " + obsah);
        }
}