Riešenia (skupina A, 2. týždeň)

Praktické cvičenie

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);
                }
                this.penDown();
        }

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

        public void rovnoramenny(double dlzkaStrany, double uhol) {
                double xStart = this.getX();
                double yStart = this.getY();
                double natocenie = this.getDirection();

                this.turn(-uhol/2);
                this.step(dlzkaStrany);
                double xPozicia = this.getX();
                double yPozicia = this.getY();
                this.step(-dlzkaStrany);
                this.turn(uhol);
                this.step(dlzkaStrany);
                this.moveTo(xPozicia, yPozicia);

                this.setPosition(xStart, yStart);
                this.setDirection(natocenie);
        }

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

        public void retiazkaRGB(int pocetKoralov, double polomerKoralu) {
                int poradie = 1;

                this.penUp();
                for (int i=0; i<pocetKoralov; i++) {

                        if (poradie % 3 == 1) {
                                this.setFillColor(Color.red);
                        }

                        if (poradie % 3 == 2) {
                                this.setFillColor(Color.green);
                        }

                        if (poradie % 3 == 0) {
                                this.setFillColor(Color.blue);
                        }

                        this.dot(polomerKoralu);
                        this.step(2*polomerKoralu);
                        poradie = poradie + 1; // poradie++;
                }
                this.penDown();
        }
}

Teoretické cvičenie

import java.awt.Color;

import sk.upjs.jpaz2.Turtle;

public class ChytraKorytnacka extends Turtle {

        public void pohorie(double rameno, double zakladna) {
                for (int i = 0; i < 5; i++) {
                        this.turn(30);
                        this.step(rameno);
                        this.turn(60);
                        this.step(zakladna);
                        this.turn(60);
                        this.step(rameno);
                        this.turn(-150);
                }
                this.turn(-90);
                this.step(5 * (zakladna + rameno));
                this.turn(90);
        }

        public void pochodzkaKruh(int pocetKrokov, double polomer) {
                double xStart = this.getX();
                double yStart = this.getY();

                for (int i = 0; i < pocetKrokov; i++) {
                        this.turn(Math.random() * 360);
                        this.step(5);

                        if (this.distanceTo(xStart, yStart) > polomer) {
                                this.step(-5);
                        }
                }

                this.setPosition(xStart, yStart);
        }

        public void pochodzkaTrojkruh(int pocetKrokov, double polomer) {
                double xStart = this.getX();
                double yStart = this.getY();

                for (int i = 0; i < pocetKrokov; i++) {
                        this.turn(Math.random() * 360);
                        if (this.distanceTo(xStart, yStart) < polomer / 3) {
                                this.penUp();
                        } else {
                                this.penDown();
                        }
                        if (this.distanceTo(xStart, yStart) < 2 * polomer / 3) {
                                this.setPenColor(Color.blue);
                        } else {
                                this.setPenColor(Color.red);
                        }
                        this.step(5);

                        if (this.distanceTo(xStart, yStart) > polomer) {
                                this.step(-5);
                        }
                }

                this.setPosition(xStart, yStart);
        }

        public void pochodzkaStvorec(int pocetKrokov, double strana) {
                double xStart = this.getX();
                double yStart = this.getY();

                for (int i = 0; i < pocetKrokov; i++) {
                        this.turn(Math.random() * 360);
                        this.step(5);

                        boolean jeVXPase = (this.getX() >= xStart-strana/2) && (this.getX() <= xStart+strana/2);
                        boolean jeVYPase = (this.getY() >= yStart-strana/2) && (this.getY() <= yStart+strana/2);
                        if (!(jeVXPase && jeVYPase)) {
                                this.step(-5);
                        }
                }

                this.setPosition(xStart, yStart);
        }
}