B5

package sk.paz1a.practicals.task5;

import java.awt.event.MouseEvent;

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

public class GrafickyEditor extends WinPane {

        private Turtle artist;
        private boolean jeStlaceneLaveTlacidloMysi;

        public GrafickyEditor() {
                artist = new Turtle();
                this.add(artist);

        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                artist.setPosition(x, y);

        }

        @Override
        protected void onMouseMoved(int x, int y, MouseEvent detail) {
                if (detail.isAltDown()) {
                        artist.setDirectionTowards(x, y);
                        double xStart = artist.getX();
                        double yStart = artist.getY();
                        artist.moveTo(x, y);
                        artist.setPosition(xStart, yStart);
                }

        }

        @Override
        protected void onMousePressed(int x, int y, MouseEvent detail) {
                if (detail.getButton() == MouseEvent.BUTTON1) {
                        jeStlaceneLaveTlacidloMysi = true;
                        System.out.println("stlacene");
                }
        }

        @Override
        protected void onMouseDragged(int x, int y, MouseEvent detail) {
                System.out.println("taha sa");
                if (jeStlaceneLaveTlacidloMysi) {
                        artist.moveTo(x, y);
                }
        }

        @Override
        protected void onMouseReleased(int x, int y, MouseEvent detail) {
                if (detail.getButton() == MouseEvent.BUTTON1) {
                        jeStlaceneLaveTlacidloMysi = false;
                        System.out.println("uvolnene");
                }
        }
}
 
package sk.paz1a.practicals.task5;

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

public class Korytnackovo extends WinPane {

        private Turtle[] poleKorytnaciek;

        public Korytnackovo() {
                poleKorytnaciek = new Turtle[10];
                for (int i = 0; i < poleKorytnaciek.length; i++) {
                        poleKorytnaciek[i] = new Turtle();
                        this.add(poleKorytnaciek[i]);
                        poleKorytnaciek[i].setPosition(this.getWidth() * Math.random(), this.getHeight() * Math.random());

                }
        }

        public void posunITu(int idx, double dlzka) {

        }
}
 
package sk.paz1a.practicals.task5;

import sk.upjs.jpaz2.*;

public class Launcher {

        public static void main(String[] args) {
//              WinPane sandbox = new WinPane();
//
//              SmartTurtle franklin = new SmartTurtle();
//              sandbox.add(franklin);
//
//              ObjectInspector oi = new ObjectInspector();
//              oi.inspect(franklin);
//              oi.inspect(sandbox);

//              GrafickyEditor ge = new GrafickyEditor();
                Korytnackovo kacerovo = new Korytnackovo();
        }
}
 
package sk.paz1a.practicals.task5;

import java.awt.Color;
import java.awt.event.MouseEvent;

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

public class Korytnackovo extends WinPane {

        private Turtle[] poleKorytnaciek;

        public Korytnackovo() {
                poleKorytnaciek = new Turtle[10];
                for (int i = 0; i < poleKorytnaciek.length; i++) {
                        poleKorytnaciek[i] = new Turtle();
                        this.add(poleKorytnaciek[i]);
                        poleKorytnaciek[i].setPosition(this.getWidth() * Math.random(), this.getHeight() * Math.random());

                }
        }

        public void posunITu(int idx, double dlzka) {
                poleKorytnaciek[idx].penUp();
                poleKorytnaciek[idx].step(dlzka);

        }

        public void nahodneFarby() {
                for (int i = 0; i < poleKorytnaciek.length; i++) {
                        Color farba = new Color((int) (Math.random() * 256), (int) (Math.random() * 256),
                                        (int) (Math.random() * 256));
                        poleKorytnaciek[i].setPenColor(farba);
                }
        }

        public Color sFarbouVon(int index) {
                return poleKorytnaciek[index].getPenColor();
        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                int korytnacka = (int) (Math.random() * poleKorytnaciek.length);
                poleKorytnaciek[korytnacka].setPosition(x, y);
        }

        public void krok() {
                // poleKorytnaciek[index].setDirectionTowards(poleKorytnaciek[index+1].getX(),poleKorytnaciek[index+1].getY());

                for (int index = 0; index < poleKorytnaciek.length; index++) {

                        if (index == 9) {
                                poleKorytnaciek[index].setDirectionTowards(poleKorytnaciek[0].getPosition());
                                double vzdialenost = poleKorytnaciek[index].distanceTo(poleKorytnaciek[0].getPosition());
                                poleKorytnaciek[index].step(vzdialenost / 10);
                        } else {
                                poleKorytnaciek[index].setDirectionTowards(poleKorytnaciek[index + 1].getPosition());
                                double vzdialenost = poleKorytnaciek[index].distanceTo(poleKorytnaciek[index + 1].getPosition());
                                poleKorytnaciek[index].step(vzdialenost / 10);
                        }
                }
        }

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

        public void doKruhu(double polomer) {
                Turtle pomocnik = new Turtle();
                this.add(pomocnik);
                pomocnik.center();
                pomocnik.penUp();

                for (int i = 0; i < poleKorytnaciek.length; i++) {
                        pomocnik.setDirection(360 / poleKorytnaciek.length * i);
                        pomocnik.step(polomer);
                        poleKorytnaciek[i].setPosition(pomocnik.getX(), pomocnik.getY());
                        pomocnik.center();
                }
                this.remove(pomocnik);
        }

        public int pocetTopKorytnaciek(double zhora) {
                int pocet = 0;
                for (int i = 0; i < poleKorytnaciek.length; i++) {

                        if (poleKorytnaciek[i].getY() < zhora) {
                                pocet = pocet + 1;
                        }
                }
                return pocet;
        }

        public void separatisti() {
                for (int i=5; i<poleKorytnaciek.length;i++) {
                        poleKorytnaciek[i].step(10);
                }
        }


}