5. sada domácich zadaní

Najneskorší termín odovzdania: 2.11.2014 (nedeľa) o 21:00
Odovzdávané súbory: KorytnaciSvet.java

Doplňujúce požiadavky:

  • riešenia, ktoré nebude možné skompilovať (t.j. riešenia so syntaktickými chybami) nebudú hodnotené,
  • zdrojový kód správne naformátujte (CTRL+SHIFT+F),
  • očakáva sa vhodne okomentovaný zdrojový kód

Korytnačí svet

Uvažujme triedu KorytnaciSvet, ktorá rozširuje triedu WinPane:

import java.awt.event.MouseEvent;

import sk.upjs.jpaz2.*;

public class KorytnaciSvet extends WinPane {
        /**
         * Referencia na pole korytnaciek
         */

        private Turtle[] korytnacky = null;

        /**
         * Inicializacna metoda
         */

        public KorytnaciSvet() {
                this.korytnacky = new Turtle[0];
        }

        /**
         * Metoda na pridanie korytnacky na zadanych suradniciach
         */

        public void pridajKorytnacku(int x, int y) {
                Turtle novaKorytnacka = new Turtle();
                this.add(novaKorytnacka);
                novaKorytnacka.setPosition(x, y);

                Turtle[] noveKorytnacky = new Turtle[this.korytnacky.length + 1];
                System.arraycopy(this.korytnacky, 0, noveKorytnacky, 0, this.korytnacky.length);
                noveKorytnacky[noveKorytnacky.length-1] = novaKorytnacka;

                this.korytnacky = noveKorytnacky;
        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                if (!(detail.isAltDown() || detail.isControlDown() || detail.isShiftDown())) {
                        this.pridajKorytnacku(x, y);
                }
        }
}

Výstrel na ťažisko (2 body)

Do triedy KorytnaciSvet pridajte metódu vystrelNaTazisko, ktorej výsledkom bude to, že každá korytnačka nakreslí čiaru zo svojej pozície do ťažiska všetkých korytnačiek. Súradnice ťažiska korytnačiek možno vypočítať ako priemer pozícii jednotlivých korytnačiek (napr. x-ová súradnica ťažiska je priemerom x-ových súradníc korytnačiek): http://en.wikipedia.org/wiki/Centroid#Of_a_finite_set_of_points

public void vystrelNaTazisko();

Plot (2 body)

V korytnačom svete sa rozhodli vybudovať segregačný plot, ktorý je rovnobežný s y-ovou osou a jeho x-ová súradnica je určená parametrom metódy.

Do triedy KorytnaciSvet pridajte metódu plot, ktorá vráti, ako je vzdialená najbližšia korytnačka od plota.

public double plot(double xSuradnicaPlota);

Na uhlopriečky (3 body)

Do triedy KorytnaciSvet pridajte metódu naUhlopriecky, ktorá pravidelne umiestni korytnačky v kresliacej ploche na uhlopriečky štvorca so stredom v strede kresliacej plochy a so zadanou dĺžkou strany. Môžete predpokladať, že počet korytnačiek v ploche je deliteľný číslom 4. V rohoch štvorca sú miestnené 4 korytnačky.

public void naUhlopriecky(double dlzkaStrany)