/* * 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 wege; private ArrayList beete; private ArrayList 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 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 pfl) { for(Pflanze p: pfl) { pflanzen.remove(p); } } }