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

Streda + Piatok

import java.awt.Color;

import sk.upjs.jpaz2.*;

public class Spustac {


        public static void main(String[] args) {
                WinPane plocha = new WinPane();
                ChytraKorytnacka julo = new ChytraKorytnacka();
                plocha.add(julo);

                plocha.setBorderColor(Color.cyan);

                julo.center();
                julo.pochodzkaTrojkruh(50000, 120);
        }

}
 
import java.awt.Color;

import sk.upjs.jpaz2.*;

public class ChytraKorytnacka extends Turtle {
        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 rameno, double uhol) {
                double xPoziciaC = this.getX();
                double yPoziciaC = this.getY();
                double natocenieKorytnacky = this.getDirection();

                this.turn(-uhol / 2);
                this.step(rameno);
                double xPoziciaA = this.getX();
                double yPoziciaA = this.getY();
                this.step(-rameno);
                this.turn(uhol);
                this.step(rameno);
                this.moveTo(xPoziciaA, yPoziciaA);

                this.setPosition(xPoziciaC, yPoziciaC);
                this.setDirection(natocenieKorytnacky);
        }

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

        }

        public void pochodzkaKruh(int pocetKrokov, double polomer) {
                // ulozime si startovaciu poziciu
                double xPozicia = this.getX();
                double yPozicia = this.getY();

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

                        // vzdialenost je mensia/rovna ako polomer kruhu
                        if (this.distanceTo(xPozicia, yPozicia) > polomer) {
                                this.step(-5);
                        }
                }
        }

        public void pochodzkaTrojkruh(int pocetKrokov, double polomer) {
                // ulozime si startovaciu poziciu
                double xPozicia = this.getX();
                double yPozicia = this.getY();

                for (int i = 0; i < pocetKrokov; i++) {
                        if(this.distanceTo(xPozicia, yPozicia) < polomer/3){
                                this.penUp();
                        } else {
                                this.penDown();
                                if(this.distanceTo(xPozicia, yPozicia) < 2*polomer/3){
                                        this.setPenColor(Color.blue);
                                } else {
                                        this.setPenColor(Color.red);
                                }
                        }

                        this.turn(Math.random() * 360);
                        this.step(5);

                        // vzdialenost je mensia/rovna ako polomer kruhu
                        if (this.distanceTo(xPozicia, yPozicia) > polomer) {
                                this.step(-5);
                        }
                }
        }

        public void retiazkaRGB(int pocetKoralov, double polomerKoralu){
                this.penUp();


                for(int i=0; i<pocetKoralov; i++){
                        if(i % 3 == 0){
                                this.setFillColor(Color.red);
                        }

                        if(i % 3 == 1){
                                this.setFillColor(Color.green);
                        }

                        if(i % 3 == 2){
                                this.setFillColor(Color.blue);
                        }

                        this.dot(polomerKoralu);
                        this.step(2*polomerKoralu);
                }

                this.penDown();
        }

        public void setricObrazovky(int sirkaPlochy, int vyskaPlochy){
                for(int i=0; i<10000000; i++){
                        this.setPenColor(new Color((int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256)));
                        this.setPosition(Math.random()*sirkaPlochy, Math.random()*vyskaPlochy);
                        this.moveTo(Math.random()*sirkaPlochy, Math.random()*vyskaPlochy);
                }

        }

        public void zahada() {
        for (int i=0; i<256; i++) {
                Color c = new Color(i, 100, 100);
                this.setPenColor(c);
                this.setPosition(i, 0);
                this.moveTo(i, 150);
        }
        }

}