E5


public class Spustac {

        /**
         * @param args
         */

        public static void main(String[] args) {

                Korytnackovo plocha=new Korytnackovo();
                plocha.posunITu(5, 10);
                plocha.nahodneFarby();
                System.out.println(plocha.sFarbouVon(2));
//              plocha.krok();
//              plocha.kroky(100);
                plocha.doKruhu(100);

        }

}
import java.awt.event.MouseEvent;

import sk.upjs.jpaz2.Turtle;
import sk.upjs.jpaz2.WinPane;


public class GrafickyEditor extends WinPane {
        private Turtle korytnacka=new Turtle();
        // konstruktor
        public GrafickyEditor(){
                super(); //rodicovsky konstruktor
                this.add(korytnacka);
                korytnacka.center();
        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                if(detail.isAltDown())
                   korytnacka.setPosition(x, y);
        }

        @Override
        protected void onMouseMoved(int x, int y, MouseEvent detail) {
                if(detail.isAltDown())
                {
                        double xSuradnica=korytnacka.getX();
                        double ySuradnica=korytnacka.getY();
                        korytnacka.setDirection(korytnacka.directionTowards(x, y));
                        korytnacka.step(korytnacka.distanceTo(x, y));
                        korytnacka.setPosition(xSuradnica, ySuradnica);
                }

        }
         @Override
            protected void onMouseDragged(int x, int y, MouseEvent detail) {
                super.onMouseDragged(x, y, detail);
                double uhol = korytnacka.directionTowards(x, y);
                korytnacka.setDirection(uhol);
                korytnacka.moveTo(x, y);
            }
}
import java.awt.Color;
import java.awt.event.MouseEvent;

import sk.upjs.jpaz2.JPAZUtilities;
import sk.upjs.jpaz2.WinPane;
import sk.upjs.jpaz2.Turtle;

public class Korytnackovo extends WinPane {
        private Turtle[] korytnacky=new Turtle[10];

        public Korytnackovo(){
                super();
                for(int i=0;i<korytnacky.length;i++){
                        korytnacky[i]=new Turtle(Math.random()*this.getWidth(),
                                                        Math.random()*this.getHeight());
                        this.add(korytnacky[i]);
                }
        }
        public void posunITu(int idx, double dlzka){
                if(idx>korytnacky.length)
                        return;
                korytnacky[idx].step(dlzka);
        }

        public void nahodneFarby(){
                for(int i=0;i<korytnacky.length;i++){
                        korytnacky[i].setPenColor(new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)));
                        korytnacky[i].step(10);
                }

        }

        public Color sFarbouVon(int index){
                return korytnacky[index].getPenColor();
        }
        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                super.onMouseClicked(x, y, detail);
                int index=(int)(Math.random()*korytnacky.length); //nahodny vyber policka
                double uhol=korytnacky[index].directionTowards(x, y);
                korytnacky[index].setDirection(uhol);
                korytnacky[index].moveTo(x, y);
        }

        public void krok(){
                int velkostPola=korytnacky.length-1;
                for(int i=1;i<korytnacky.length;i++){
                        double vzdielenost=korytnacky[i-1].distanceTo(korytnacky[i].getPosition());
                        double uhol=korytnacky[i-1].directionTowards(korytnacky[i].getPosition());
                        korytnacky[i-1].setDirection(uhol);
                        korytnacky[i-1].step(vzdielenost/10);
                }
                double vzdielenost=korytnacky[velkostPola].distanceTo(korytnacky[0].getPosition());
                double uhol=korytnacky[velkostPola].directionTowards(korytnacky[0].getPosition());
                korytnacky[velkostPola].setDirection(uhol);
                korytnacky[velkostPola].step(vzdielenost/10);
        }

        public void kroky(int pocetKrokov) {
                for (int i = 0; i < pocetKrokov; i ++) {
                        this.krok();
                        JPAZUtilities.delay(50);
                }
        }

        public void doKruhu(double polomer) {
                //pridat pomocnu korytnacku
                Turtle pom = new Turtle();
                this.add(pom);
                pom.center();
                pom.penUp();

                for (int i = 0; i < korytnacky.length; i++) {
                        //krok dopredu (pomocna korytnacka)
                        pom.step(polomer);
                        //presun i-tej korytnacky
                        korytnacky[i].setPosition(pom.getPosition());
                        //krok spat (pomocna korytnacka)
                        pom.step(-polomer);
                        //natocenie i-tej korytnacky
                        double uhol = korytnacky[i].directionTowards(pom.getPosition());
                        korytnacky[i].setDirection(uhol);
                        //natocenie pomocnej korytnacky
                        pom.turn(360/korytnacky.length);
                }
                //odstranenie pomoocnej korytnacky
                this.remove(pom);
        }
}