C10

Streda

package paz1a.practicals.task10;

import java.awt.Color;

import sk.upjs.jpaz2.Pane;

public class Tvar  {

        private double x;
        private double y;
        private Color color;


        public Tvar(double x, double y, Color color) {
                super();
                this.x = x;
                this.y = y;
                this.color = color;
        }



        public double getX() {
                return x;
        }


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


        public double getY() {
                return y;
        }


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


        public Color getColor() {
                return color;
        }


        public void setColor(Color color) {
                this.color = color;
        }

        public void vykresliSa(Pane plocha) {
                System.err.println("Nemame dostatok informacii na vykresleni tvaru");
        }

        public boolean jeVnutornyBod(double x, double y) {
                System.err.println("Nemame dostatok informacii na urcenie ci je bod vnutorny");
                return false;
        }


}

 

package paz1a.practicals.task10;

import java.awt.Color;

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

public class Kruh extends Tvar {

        private double radius;

        public Kruh(double x, double y, Color color, double radius) {
                super(x,y,color);
                this.radius = radius;
        }

        public double getRadius() {
                return radius;
        }

        public void setRadius(double radius) {
                this.radius = radius;
        }

        @Override
        public void vykresliSa(Pane plocha) {
                Turtle kreslic = new Turtle(this.getX(), this.getY());
                plocha.add(kreslic);
                kreslic.setFillColor(this.getColor());
                kreslic.dot(radius);
                plocha.remove(kreslic);
        }

        public boolean jeVnutornyBod(double x, double y) {
                if ((this.getX() - x) * (this.getX() - x) + (this.getY() - y) * (this.getY() - y) < (this.radius * this.radius)) {
                        return true;
                }
                return false;
        }

}


}

 
package paz1a.practicals.task10;

import java.awt.Color;

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

public class Obdlznik extends Tvar {

        private double vyska;
        private double sirka;

        public Obdlznik(double x, double y, Color color) {
                super(x, y, color);

        }

        public Obdlznik(double x, double y, Color color, double vyska, double sirka) {
                this(x, y, color);
                this.vyska = vyska;
                this.sirka = sirka;

        }

        public double getVyska() {
                return vyska;
        }

        public void setVyska(double vyska) {
                this.vyska = vyska;
        }

        public double getSirka() {
                return sirka;
        }

        public void setSirka(double sirka) {
                this.sirka = sirka;
        }

        @Override
        public void vykresliSa(Pane plocha) {
                Turtle kreslic = new Turtle(this.getX(), this.getY());
                plocha.add(kreslic);
                kreslic.setFillColor(this.getColor());
                kreslic.setPosition(this.getX()-sirka/2, this.getY()+vyska/2);
                kreslic.openPolygon();
                for (int i = 0; i < 2; i++) {
                        kreslic.step(vyska);
                        kreslic.turn(90);
                        kreslic.step(sirka);
                        kreslic.turn(90);
                }
                kreslic.closePolygon();
                plocha.remove(kreslic);
        }




}
package paz1a.practicals.task10;

import sk.upjs.jpaz2.*;

import java.awt.Color;

public class Launcher {


                public static void main(String[] args) {
                          WinPane plocha = new WinPane();
                          Tvar t;
                          if (Math.random() < 0.5) {
                            t = new Kruh(Math.random()*plocha.getWidth(), Math.random()*plocha.getHeight(),Color.RED,50);

                          } else {
                            t = new Obdlznik(Math.random()*plocha.getWidth(), Math.random()*plocha.getHeight(),Color.BLUE,40,60);  
                          }

                          t.vykresliSa(plocha);
                        }


}

Stvrtok

package paz1a.practicals.task10;

import java.awt.Color;

import sk.upjs.jpaz2.Pane;

public class Tvar  {

        private double x;
        private double y;
        private Color color;


        public Tvar(double x, double y, Color color) {
                super();
                this.x = x;
                this.y = y;
                this.color = color;
        }



        public double getX() {
                return x;
        }


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


        public double getY() {
                return y;
        }


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


        public Color getColor() {
                return color;
        }


        public void setColor(Color color) {
                this.color = color;
        }

        public void vykresliSa(Pane plocha) {
                System.err.println("Nemame dostatok informacii na vykresleni tvaru");
        }

        public boolean jeVnutornyBod(double x, double y) {
                System.err.println("Nemame dostatok informacii na urcenie ci je bod vnutorny");
                return false;
        }


}

 

package paz1a.practicals.task10;

import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

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

public class Kruh extends Tvar {

        private double radius;



        public Kruh(double x, double y, Color color, double radius) {
                super(x,y,color);
                this.radius = radius;
        }

        public double getRadius() {
                return radius;
        }

        public void setRadius(double radius) {
                this.radius = radius;
        }

        @Override
        public void vykresliSa(Pane plocha) {
                Turtle kreslic = new Turtle();
                plocha.add(kreslic);
                kreslic.setPosition(this.getX(), this.getY());
                kreslic.setFillColor(this.getColor());
                kreslic.dot(radius);
                plocha.remove(kreslic);
        }

        public boolean jeVnutornyBod(double x, double y) {
                return (this.getX() - x) * (this.getX() - x) + (this.getY() - y) * (this.getY() - y) < (this.radius * this.radius);

        }

        public void citajZoSuboru(File subor) {
                //String fileName = "subor.txt";
                //File suborZoStringu = new File(nazov);
                Scanner sc = null;
                try {
                         sc = new Scanner(subor);




                } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        return;
                }

                while(sc.hasNextLine()) {
                        String line = sc.nextLine();
                        //Scanner lineSc = new Scanner(line);  // možnosť 1. pouzitie scannera na samotný riadok
                        String[] words=line.split(" "); // možnosť 2.: rozdelime na slova podla oddelovaca
                        if(words.length==3) { // pozrieme si pocet slov
                                Kruh k = new Kruh(Double.parseDouble(words[0]), Double.parseDouble(words[1]),Color.red,Double.parseDouble(words[2]));
                        }
                }
        }

}

 
package paz1a.practicals.task10;

import java.awt.Color;

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

public class Obdlznik extends Tvar {

        private double vyska;
        private double sirka;

        public Obdlznik(double x, double y, Color color) {
                super(x, y, color);

        }

        public Obdlznik(double x, double y, Color color, double vyska, double sirka) {
                this(x, y, color);
                this.vyska = vyska;
                this.sirka = sirka;

        }

        public double getVyska() {
                return vyska;
        }

        public void setVyska(double vyska) {
                this.vyska = vyska;
        }

        public double getSirka() {
                return sirka;
        }

        public void setSirka(double sirka) {
                this.sirka = sirka;
        }

        @Override
        public void vykresliSa(Pane plocha) {
                Turtle kreslic = new Turtle(this.getX(), this.getY());
                plocha.add(kreslic);
                kreslic.setFillColor(this.getColor());
                kreslic.setPosition(this.getX()-sirka/2, this.getY()+vyska/2);
                kreslic.openPolygon();
                for (int i = 0; i < 2; i++) {
                        kreslic.step(vyska);
                        kreslic.turn(90);
                        kreslic.step(sirka);
                        kreslic.turn(90);
                }
                kreslic.closePolygon();
                plocha.remove(kreslic);
        }

        public boolean jeVnutornyBod(double x, double y) {
                return Math.abs(this.getX() - x) < this.sirka/2 && Math.abs(this.getY() - y) < this.vyska/2;
        }


}
package paz1a.practicals.task10;

import sk.upjs.jpaz2.Pane;

public class ZoznamTvarov {

        private Tvar[] tvary;

        public ZoznamTvarov() {
                tvary = new Tvar[0];
        }

        public void pridajTvar(Tvar t) {
                if (t == null) {
                        return;
                }
                Tvar[] noveTvary = new Tvar[tvary.length + 1];
                for (int i = 0; i < tvary.length; i++) {
                        noveTvary[i] = tvary[i];
                }
                noveTvary[tvary.length] = t;
                tvary = noveTvary;

        }

        public void nakresliVsetky(Pane plocha) {
                for (int i = 0; i < tvary.length; i++) {
                        tvary[i].vykresliSa(plocha);
                }
        }

        public void posun(double dx, double dy) {

                for (int i = 0; i < tvary.length; i++) {
                        tvary[i].setX(this.tvary[i].getX() + dx);
                        tvary[i].setY(this.tvary[i].getY() + dy);
                }

        }

        public Tvar bodTvaru(double x, double y) {
                for (int i = 0; i < tvary.length; i++) {
                        if (tvary[i].jeVnutornyBod(x, y)) {
                                return tvary[i];
                        }
                }
                return null;
        }

        public void odstranTvar(Tvar t) {
                Tvar[] novyZoznam = new Tvar[tvary.length - 1];
                int index = Integer.MAX_VALUE;

                for (int i = 0; i < tvary.length; i++) {
                        if (tvary[i] == t) {
                                index = i;
                        }
                }
                if (index > tvary.length) {
                        return;
                }
                for (int i = 0; i < tvary.length; i++) {
                        if (i != index) {
                                if (i > index) {
                                        novyZoznam[i - 1] = tvary[i];
                                } else {
                                        novyZoznam[i] = tvary[i];
                                }

                        }
                }
                tvary = novyZoznam;
        }

}
package paz1a.practicals.task10;

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

import sk.upjs.jpaz2.WinPane;

public class PlochaTvarov extends WinPane {

        private ZoznamTvarov tvary;

        private double dragX;
        private double dragY;
        private boolean tahanie = false;

        public PlochaTvarov() {
                this.tvary = new ZoznamTvarov();
        }

        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                if (detail.getButton() == MouseEvent.BUTTON1) {
                        if (detail.isAltDown()) {
                                this.tvary.pridajTvar(new Kruh(x, y,Color.RED,30+Math.random()*20));
                        } else {
                                this.tvary.pridajTvar(new Obdlznik(x,y,Color.BLUE,20+Math.random()*20,10+Math.random()*40));
                        }
                }

                if (detail.getButton() == MouseEvent.BUTTON3) {
                        Tvar naOdstranenie = this.tvary.bodTvaru(x, y);
                        if (naOdstranenie != null) {
                                this.tvary.odstranTvar(naOdstranenie);
                        }
                }

                this.clear();
                this.tvary.nakresliVsetky(this);
        }


        @Override
        protected void onMousePressed(int x, int y, MouseEvent detail) {
                if (detail.getButton() == MouseEvent.BUTTON1) {
                        this.tahanie = true;
                        this.dragX = x;
                        this.dragY = y;
                }
        }

        @Override
        protected void onMouseDragged(int x, int y, MouseEvent detail) {
                if (this.tahanie) {
                        tvary.posun(x - this.dragX, y - this.dragY);
                        this.dragX = x;
                        this.dragY = y;
                        this.clear();
                        this.tvary.nakresliVsetky(this);
                }
        }

        @Override
        protected void onMouseReleased(int x, int y, MouseEvent detail) {
                if (detail.getButton() == MouseEvent.BUTTON1) {
                        this.tahanie = false;
                }
        }
}
package paz1a.practicals.task10;

import sk.upjs.jpaz2.*;

import java.awt.Color;

public class Launcher {


                public static void main(String[] args) {
                        /*  WinPane plocha = new WinPane();
                          Tvar t;
                          if (Math.random() < 0.5) {
                            t = new Kruh(Math.random()*plocha.getWidth(), Math.random()*plocha.getHeight(),Color.RED,50);

                          } else {
                            t = new Obdlznik(Math.random()*plocha.getWidth(), Math.random()*plocha.getHeight(),Color.BLUE,40,60);  
                          }

                          t.vykresliSa(plocha);*/


                        PlochaTvarov plocha = new PlochaTvarov();

                        }


}