D10

Streda a Piatok

package sk.upjs.test;

import java.awt.Color;
import java.awt.geom.Point2D;

public class FarebnyBod extends Point2D implements Comparable<FarebnyBod>{
        private double x;
        private double y;
        private Color farba;

        public double getX() {
                return x;
        }

        public void setX(double x) {
                this.x = x;
        }

        public FarebnyBod(double x, double y, Color f) {
                super();
                this.x = x;
                this.y = y;
                this.farba = f;
        }

        public FarebnyBod(double x, double y) {
                this.x = x;
                this.y = y;
                int cisloFarby = (int) (1 + Math.random() * 3);
                if (cisloFarby == 1) {
                        this.farba = Color.red;
                }
                if (cisloFarby == 2) {
                        this.farba = Color.green;
                }
                if (cisloFarby == 3) {
                        this.farba = Color.blue;
                }
        }

        public double getY() {
                return y;
        }

        public void setY(double y) {
                this.y = y;
        }

        public Color getF() {
                return farba;
        }

        public void setF(Color f) {
                this.farba = f;
        }

        @Override
        public void setLocation(double x, double y) {
                this.x = x;
                this.y = y;

        }

        @Override
        public boolean equals(Object obj) {
                FarebnyBod fb = (FarebnyBod) obj;
                if (fb.getX() == this.x && fb.getY() == this.y
                                && this.farba == fb.getF()) {
                        return true;
                }
                return false;

        }

        @Override
        public int compareTo(FarebnyBod fb) {

                if(this.farba.getRGB()<fb.getF().getRGB())
                {
                        return -1;
                }
                if(this.farba.getRGB()>fb.getF().getRGB())
                {
                        return 1;
                }
                if(this.farba.getRGB()==fb.getF().getRGB())
                {
                        return 0;
                }

                return 0;
        }


}
package sk.upjs.test;

import java.awt.Color;
import java.util.Arrays;

import sk.upjs.jpaz2.Pane;
import sk.upjs.jpaz2.Turtle;

public class ZoznamBodov {

        private FarebnyBod[] zoznam;

        public ZoznamBodov() {
                zoznam = new FarebnyBod[0];
        }

        public ZoznamBodov(double minX, double minY, double maxX, double maxY,
                        int pocet) {
                zoznam = new FarebnyBod[0];

                for (int i = 0; i < pocet; i++) {
                        double nahodneX = minX + Math.random() * (maxX - minX);
                        double nahodneY = minY + Math.random() * (maxY - minY);

                        FarebnyBod fb = new FarebnyBod(nahodneX, nahodneY);

                        pridaj(fb);
                }

        }

        public void pridaj(FarebnyBod bod) {
                FarebnyBod[] nove = new FarebnyBod[zoznam.length + 1];
                for (int i = 0; i < zoznam.length; i++) {
                        nove[i] = zoznam[i];
                }

                nove[zoznam.length] = bod;
                this.zoznam = nove;
        }

        public void vymaz(FarebnyBod bod) {
                int indexVymazaneho = -1;
                for (int i = 0; i < zoznam.length; i++) {
                        if (bod.equals(zoznam[i])) {
                                indexVymazaneho = i;
                                break;
                        }

                }
                if (indexVymazaneho != -1) {
                        FarebnyBod[] nove = new FarebnyBod[zoznam.length - 1];
                        System.arraycopy(zoznam, 0, nove, 0, indexVymazaneho);
                        System.arraycopy(zoznam, indexVymazaneho + 1, nove,
                                        indexVymazaneho, zoznam.length - indexVymazaneho);
                        zoznam = nove;
                }

        }
        public void vykresli(Pane plocha){
                Turtle kreslic = new Turtle();
                plocha.add(kreslic);
                for (int i = 0; i< zoznam.length; i++){
                        kreslic.setPosition(zoznam[i].getX(), zoznam[i].getY());
                        kreslic.setFillColor(zoznam[i].getF());
                        kreslic.dot(5);
                }
                plocha.remove(kreslic);
        }

        public String toString()
        {
                return Arrays.toString(zoznam);
        }

        public void zotried() {
                Arrays.sort(zoznam);
        }
        public void odstran(Color farba){
                for (int i = 0; i < zoznam.length; i++) {
                        if(zoznam[i].getF()==farba){
                                this.vymaz(zoznam[i]);
                        }
                }
        }

}