123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /*
- * 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;
- 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(MouseEvent e)
- {
- Beet tempBeet = null;
- for (Beet b : beete)
- {
- int[] koordinvergleich = b.getKoordinaten();
- if (koordinvergleich[0] < e.getX() && koordinvergleich[1] < e.getY() && (koordinvergleich[2] + koordinvergleich[0]) > e.getX() && (koordinvergleich[3] + koordinvergleich[1]) > e.getY())
- {
- 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)
- {
- PflanzengruppenKonfigurator konfig = new PflanzengruppenKonfigurator();
- int randomAlter = (int) (Math.random() * 2 + 1);
- int randomTyp = (int) (Math.random() * 3 + 1);
-
- int[] temp = b.getKoordinaten();
- int laenge;
-
- konfig.alter(randomAlter);
- konfig.pflanzenTyp(randomTyp);
- if (randomTyp == 1)
- {
- laenge = 30;
- }
- else
- {
- laenge = 15;
- }
- konfig.startlaenge(laenge);
- konfig.beet(b);
- konfig.erstellen();
-
- for (Pflanze pf : b.getPflanzenausgruppe())
- {
- hinzufuegenPflanze(pf);
- }
- }
- 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;
-
- int deltax = randomwertex[3] / 3;
- int deltay = randomwertey[3] / 3;
- 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));
- int wegendex = (int) (Math.random() * ((randomwertex[3] / 3 - 40 * i) * i) + (randomwertex[3] / 4 * i));
- int wegendey = (int) (Math.random() * ((randomwertey[3] / 3 - 40 * i) * i) + (randomwertey[3] / 4 * 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;
- Beet StartBeet = null;
- int abstand = 15;
-
- 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);
- StartBeet = getBeet(e);
-
- 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());
- }
- }
- StartBeet.pflgruppe.removePflanze(diePflanze);
- return diePflanze;
- }
-
- public void setmovePflanze(MouseEvent e)
- {
-
- pflanzen.get(intmovePflanze).setPositionx(e.getX());
- pflanzen.get(intmovePflanze).setPositiony(e.getY());
- pflanzen.get(intmovePflanze).setAlgorithm();
- getBeet(e).pflgruppe.addPflanze(pflanzen.get(intmovePflanze));
- zeichnePflanzen();
- }
-
- public void removePflanzen(ArrayList<Pflanze> pfl)
- {
- for(Pflanze p: pfl)
- {
- pflanzen.remove(p);
- }
- }
- }
|