123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package garten.model;
-
- import garten.view.FlaecheBeet;
- import garten.view.FlaechePflanzen;
- import garten.view.FlaecheWeg;
- import java.awt.event.MouseEvent;
- import java.util.ArrayList;
-
- /**
- *
- * @author Jan
- */
- public class Garten extends Kompositum
- {
- private ArrayList<Weg> wege;
- private ArrayList<Beet> beete;
- private ArrayList<Pflanze> pflanzen;
-
- private Pflanze pfl;
- private Pflanze1 pfl1;
- private Pflanze2 pfl2;
- private Pflanze3 pfl3;
- int intmovePflanze;
- FlaecheBeet flbeet;
- FlaecheWeg flweg;
- FlaechePflanzen flpfl;
-
- public Garten(FlaecheBeet flbeet, FlaecheWeg flweg, FlaechePflanzen flpfl)
- {
- wege = new ArrayList();
- beete = new ArrayList();
- pflanzen = new ArrayList();
-
- this.flbeet = flbeet;
- this.flweg = flweg;
- this.flpfl = flpfl;
- }
-
- //Funktionen Beete
- public void hinzufuegenBeet(int x, int y, int a, int b)
- {
- Beet neuesBeet = new Beet(x, y, a, b);
- beete.add(neuesBeet);
- }
-
- public ArrayList<Beet> getBeete()
- {
- return beete;
- }
-
- public void zeichneBeete()
- {
- flbeet.zeichneBeete(beete);
- }
-
- public Beet getBeet(int[] mausposition)
- {
- System.out.println("Suche richtiges Beet");
- Beet tempBeet = null;
- for (Beet b : beete)
- {
- int[] koordinvergleich = b.getKoordinaten();
- System.out.println("Maus: " +mausposition[0] +" " + mausposition[1]);
- System.out.println("Beet: " +koordinvergleich[0]+" " + koordinvergleich[1]+" " + koordinvergleich[2]+" " + koordinvergleich[3]);
- if(koordinvergleich[0]<mausposition[0] && koordinvergleich[1]<mausposition[1] && (koordinvergleich[2]+koordinvergleich[0]) >mausposition[0] && (koordinvergleich[3]+koordinvergleich[1]) > mausposition[1] )
- {
- System.err.println("Kommt zum Vergleich?");
- tempBeet = b;
- }
- }
- return tempBeet;
- }
- //Funktionen Wege
- public void hinzufuegenWeg(int sx, int sy, int ex, int ey)
- {
- Weg neuerWeg = new Weg(sx, sy, ex, ey);
- wege.add(neuerWeg);
- }
-
- public void zeichneWeg()
- {
- flweg.zeichneWeg(wege);
- }
-
- //Funktionen Pflanzen
- public void hinzufuegenPflanze(Pflanze pflanze)
- {
- pflanzen.add(pflanze);
- }
-
- public void zeichnePflanzen()
- {
- flpfl.setPflanzen(pflanzen);
- }
-
- public Boolean randomBepflanzung()
- {
- for (Beet b : beete)
- {
- try
- {
-
- int randomAlter = (int) (Math.random() * 3 + 1);
- int randomTyp = (int) (Math.random() * 3 + 1);
- Boolean bepflanzung = true;
- Boolean versetzt = true;
- int[] temp = b.getKoordinaten();
-
- int tempx = temp[0] + 10;
- int tempy = temp[1] + 20;
- int tempxrand = temp[2] + temp[0];
- int tempyrand = temp[3] + temp[1];
-
- int deltax = (temp[2] - 40) / ((temp[2] - 40) / 40);
- int deltay = (temp[3] - 40) / ((temp[3] - 40) / 50);
- do
- {
- if (randomTyp == 1)
- {
- pfl1 = new Pflanze1(tempx, tempy, randomAlter,20);
- float[] tempbound = pfl1.getBoundingBoxes();
- System.out.println("Bounding Boxes: " + tempbound[0] + " " + tempbound[1] + " " + tempbound[2] + " " + tempbound[3]);
- hinzufuegenPflanze(pfl1);
- }
- else if (randomTyp == 2)
- {
- pfl2 = new Pflanze2(tempx, tempy, randomAlter,15);
- hinzufuegenPflanze(pfl2);
- }
- else if (randomTyp == 3)
- {
- pfl3 = new Pflanze3(tempx, tempy, randomAlter,10);
- hinzufuegenPflanze(pfl3);
- }
- tempx += deltax;
- if (tempx > tempxrand)
- {
- if (versetzt)
- {
- tempx = temp[0] + 30;
- versetzt = false;
- }
- else
- {
- tempx = temp[0] + 20;
- versetzt = true;
- }
- tempy += deltay;
- }
- if (tempy > tempyrand)
- {
- bepflanzung = false;
- }
- }
- while (bepflanzung);
- }
- catch (ArithmeticException e)
- {
- pflanzen.removeAll(pflanzen);
- return false;
- }
- }
- zeichnePflanzen();
- return true;
- }
-
- public void löscheBepflanzung()
- {
- pflanzen.removeAll(pflanzen);
- flpfl.löschePflanzen();
- }
-
- public void erstelleGarten()
- {
- int height = flbeet.getHeight();
- int width = flbeet.getWidth();
- int[] randomwertex = new int[4];
- int[] randomwertey = new int[4];
- randomwertex[0] = 10;
- randomwertey[0] = 10;
- randomwertex[3] = width - 50;
- randomwertey[3] = height - 50;
-
- for (int i = 1; i < 3; i++) //erstelle Random Punkte für Wege + Beete
- {
- int wegendex = (int) (Math.random() * (170 * i) + (200 * i));
- int wegendey = (int) (Math.random() * (170 * i) + (200 * i));
- randomwertex[i] = wegendex;
- randomwertey[i] = wegendey;
- }
-
- for (int i = 0; i < randomwertex.length; i++) //Garten Wege hinzufügen
- {
- hinzufuegenWeg(randomwertex[i], randomwertey[0], randomwertex[i], randomwertey[3]);
- hinzufuegenWeg(randomwertex[0], randomwertey[i], randomwertex[3], randomwertey[i]);
- }
- for (int i = 0; i < randomwertex.length - 1; i++) //Garten Beete hinzufügen
- {
- for (int j = 0; j < randomwertey.length - 1; j++)
- {
- hinzufuegenBeet(randomwertex[i] + 10, randomwertey[j] + 10, randomwertex[i + 1] - randomwertex[i] - 20, randomwertey[j + 1] - randomwertey[j] - 20);
- }
- }
- zeichneWeg();
- zeichneBeete();
- }
-
- public void löscheGarten()
- {
- wege.removeAll(wege);
- beete.removeAll(beete);
- pflanzen.removeAll(pflanzen);
- flpfl.löschePflanzen();
- flbeet.löscheBeete();
- flweg.löscheWeg();
- }
-
- public Pflanze getmovePflanze(MouseEvent e)
- {
- Pflanze diePflanze = null;
- int abstand = 30;
-
- for (int i = 0; i < pflanzen.size(); i++)
- {
-
- if (Math.abs(pflanzen.get(i).getPositionx() - e.getX()) + Math.abs(pflanzen.get(i).getPositiony() - e.getY()) < abstand)
- {
- diePflanze = pflanzen.get(i);
- abstand = Math.abs(pflanzen.get(i).getPositionx() - e.getX()) + Math.abs(pflanzen.get(i).getPositiony() - e.getY());
- System.out.println("Pflanze: " + diePflanze.getPositionx() + " " + diePflanze.getPositiony());
-
- intmovePflanze = i;
- System.out.println("Alte Position: " + pflanzen.get(intmovePflanze).getPositionx() + " " + pflanzen.get(intmovePflanze).getPositiony());
- }
- }
- return diePflanze;
- }
-
- public void setmovePflanze(MouseEvent e)
- {
- pflanzen.get(intmovePflanze).setPositionx(e.getX());
- pflanzen.get(intmovePflanze).setPositiony(e.getY());
- pflanzen.get(intmovePflanze).setAlgorithm();
- zeichnePflanzen();
- }
-
- }
|