E2

import java.awt.Color;

import sk.upjs.jpaz2.Turtle;

public class ChytraKorytnacka extends Turtle {

        public void retiazka(int pocetKoralov, double polomerKoralu) {
                this.setFillColor(Color.blue);
                this.penUp();

                for (int i = 0; i < pocetKoralov; i++) {
                        this.dot(polomerKoralu);
                        this.step(2 * polomerKoralu);
                }
        }

        public void nUholnik(int n, double dlzkaStrany) {
                for (int i = 0; i < n; i++) {
                        this.step(dlzkaStrany);
                        this.turn(360 / n);
                }
        }

        public void prerusovana(int n, double dlzkaUseku) {
                for (int i = 0; i < n; i++) {
                        this.step(dlzkaUseku / 4);
                        this.penUp();
                        this.step(dlzkaUseku / 2);
                        this.penDown();
                        this.step(dlzkaUseku / 4);
                }
        }

        public void rovnoramenny(double rameno, double uhol) {
                // Do premennych startX a startY si ulozime
                // poziciu korytnacky pri zavolani tejto metody
                double startX = this.getX();
                double startY = this.getY();
                // Do premennej natocenie si ulozime natocenie (smer)
                // korytnacky pri zavolani tejto metody
                double natocenie = this.getDirection();

                // Kreslenie
                this.turn(-uhol / 2);
                this.step(rameno);

                // Sme v bode A, ulozime si teda x-ovu a y-ovu suradnicu
                // tohto bodu (pouzijeme ich neskor)

                // Vytvorime premennu xPoziciaA na hodnoty typu double
                double xPoziciaA;
                // Do premennej xPoziciaA ulozime aktualnu x-ovu suradnicu
                // pozicie korytnacky - ziskame ju tak, ze sa "sami seba" spytame
                // na x-ovu suradnicu
                xPoziciaA = this.getX();

                // Ako predosle, ale s y-ovou suradnicou. Kombinujeme vytvorenie
                // premennej aj inicializaciu hodnoty do jedneho prikazu
                double yPoziciaA = this.getY();

                // Dalsie kreslenie
                this.step(-rameno);
                this.turn(uhol);
                this.step(rameno);

                // Na zaver sa presunieme na ulozenu poziciu bodu A
                this.moveTo(xPoziciaA, yPoziciaA);

                // Korytnacku presunieme tam, kde bola na zaciatku, a natocime smerom,
                // akym bola natocena na zaciatku (pri volani tejto metody)
                this.setPosition(startX, startY);
                this.setDirection(natocenie);
        }

        public void mlyn(int pocetRamien, double dlzkaRamena) {
                for (int i = 0; i < pocetRamien; i++) {
                        this.rovnoramenny(dlzkaRamena, (360 / pocetRamien) / 2);
                        this.turn(360 / pocetRamien);
                }
        }

        public void retiazkaRGB(int pocetKoralov, double polomerKoralu) {
                this.setFillColor(Color.red);
                this.penUp();
                for (int i = 0; i < pocetKoralov; i++) {
                        this.dot(polomerKoralu);
                        this.step(2 * polomerKoralu);

                        Color farba = this.getFillColor();
                        if (farba == Color.red) {
                                this.setFillColor(Color.green);
                        } else if (farba == Color.green) {
                                this.setFillColor(Color.blue);
                        } else {
                                this.setFillColor(Color.red);
                        }
                }
                this.penDown();
        }
}