package garten.model; | package garten.model; | ||||
import java.util.ArrayList; | |||||
/** | /** | ||||
* | * | ||||
* @author Jan | * @author Jan | ||||
{ | { | ||||
int laenge; | int laenge; | ||||
int breite; | int breite; | ||||
Pflanzengruppe pflgruppe; | |||||
public Beet(int x, int y,int laenge, int breite) | public Beet(int x, int y,int laenge, int breite) | ||||
{ | { | ||||
positionx = x; | positionx = x; | ||||
positiony = y; | positiony = y; | ||||
this.laenge = laenge; | this.laenge = laenge; | ||||
this.breite = breite; | this.breite = breite; | ||||
pflgruppe = null; | |||||
} | } | ||||
public int [] getKoordinaten() | public int [] getKoordinaten() | ||||
{ | { | ||||
int[] temp = {positionx,positiony,laenge,breite}; | int[] temp = {positionx,positiony,laenge,breite}; | ||||
return temp; | return temp; | ||||
} | } | ||||
public void setPflanzengruppeBeet(Pflanzengruppe pflgruppe) | |||||
{ | |||||
this.pflgruppe = pflgruppe; | |||||
} | |||||
public ArrayList<Pflanze> getPflanzenausgruppe() | |||||
{ | |||||
System.out.println("Beet frägt nach seinen Pflanzen"); | |||||
System.out.println(pflgruppe.getPflanzeninGruppe()); | |||||
return pflgruppe.getPflanzeninGruppe(); | |||||
} | |||||
} | } |
package garten.model; | package garten.model; | ||||
import garten.view.Fenster; | import garten.view.Fenster; | ||||
import garten.view.GUI; | |||||
import java.awt.MouseInfo; | |||||
import java.awt.event.ActionEvent; | import java.awt.event.ActionEvent; | ||||
import java.awt.event.ActionListener; | import java.awt.event.ActionListener; | ||||
import java.awt.event.MouseEvent; | import java.awt.event.MouseEvent; | ||||
Pflanze3 pfl3; | Pflanze3 pfl3; | ||||
int height; | int height; | ||||
int width; | int width; | ||||
GUI gui; | |||||
public Gaertner(Fenster fenster) | public Gaertner(Fenster fenster) | ||||
{ | { | ||||
this.fenster = fenster; | this.fenster = fenster; | ||||
meinGarten = new Garten(fenster.getFlbeet(), fenster.getFlweg(), fenster.getFlpfl()); | meinGarten = new Garten(fenster.getFlbeet(), fenster.getFlweg(), fenster.getFlpfl()); | ||||
//this.gui = gui; | |||||
//meinGarten = new Garten(gui.getFlaecheBeet2(), gui.getFlaecheWeg1(), gui.getFlaechePflanzen1()); | |||||
pflanzebewegt = false; | pflanzebewegt = false; | ||||
gartenexistiert = false; | gartenexistiert = false; | ||||
bepflanzungexistiert = false; | bepflanzungexistiert = false; | ||||
{ | { | ||||
fenster.addMouseListener(this); | fenster.addMouseListener(this); | ||||
fenster.addMouseMotionListener(this); | fenster.addMouseMotionListener(this); | ||||
//fenster.getFlbeet().addMouseListener(this); | |||||
//fenster.getFlpfl().addMouseListener(this); | |||||
//fenster.getFlweg().addMouseListener(this); | |||||
fenster.getMnGartenanlegen().addActionListener(this); | fenster.getMnGartenanlegen().addActionListener(this); | ||||
fenster.getMnRandomPflanzenanlegen().addActionListener(this); | fenster.getMnRandomPflanzenanlegen().addActionListener(this); | ||||
fenster.getRadiobtn1pfl1().setVisible(true); | fenster.getRadiobtn1pfl1().setVisible(true); | ||||
/* | |||||
gui.addMouseListener(this); | |||||
gui.addMouseMotionListener(this); | |||||
gui.getMnGartenanlegen().addActionListener(this); | |||||
gui.getMnRandomPflanzenanlegen().addActionListener(this); | |||||
gui.getBtnbepfl1().addActionListener(this); | |||||
gui.getBtnbepfl2().addActionListener(this); | |||||
gui.getBtnbepfl3().addActionListener(this); | |||||
gui.getRadiobtn1pfl1().addActionListener(this); | |||||
gui.getRadiobtn1pfl2().addActionListener(this); | |||||
gui.getRadiobtn1pfl3().addActionListener(this); | |||||
gui.getRadiobtn2pfl1().addActionListener(this); | |||||
gui.getRadiobtn2pfl2().addActionListener(this); | |||||
gui.getRadiobtn2pfl3().addActionListener(this); | |||||
gui.getRadiobtn3pfl1().addActionListener(this); | |||||
gui.getRadiobtn3pfl2().addActionListener(this); | |||||
gui.getRadiobtn3pfl3().addActionListener(this); | |||||
gui.getRadiobtn4pfl3().addActionListener(this); | |||||
*/ | |||||
} | } | ||||
@Override | @Override | ||||
public void mouseClicked(MouseEvent e) | public void mouseClicked(MouseEvent e) | ||||
{ | { | ||||
System.out.println("MouseEvent"); | |||||
if (SwingUtilities.isRightMouseButton(e))//Bei Rechtsklick Popup Menü | if (SwingUtilities.isRightMouseButton(e))//Bei Rechtsklick Popup Menü | ||||
{ | { | ||||
//Zwischenspeichern der Koordinaten der Maus um Beet zu finden | //Zwischenspeichern der Koordinaten der Maus um Beet zu finden | ||||
aktuellesBeet[0] = MouseInfo.getPointerInfo().getLocation().x; | |||||
System.out.println("Beet x: " + aktuellesBeet[0]); | |||||
aktuellesBeet[1] = MouseInfo.getPointerInfo().getLocation().y; | |||||
System.out.println("Beet y: " + aktuellesBeet[1]); | |||||
fenster.showPoPup(e); | |||||
} | |||||
else | |||||
{ | |||||
fenster.hidePopup(); | |||||
aktuellesBeet[0] = e.getX(); | |||||
aktuellesBeet[1] = e.getY(); | |||||
} | } | ||||
} | } | ||||
konfig.alter(alter); | konfig.alter(alter); | ||||
konfig.pflanzenTyp(pflanzentyp); | konfig.pflanzenTyp(pflanzentyp); | ||||
konfig.startlaenge(laenge); | konfig.startlaenge(laenge); | ||||
konfig.beet(meinGarten.getBeet(aktuellesBeet)); | |||||
konfig.erstellen(); | konfig.erstellen(); | ||||
System.out.println("Das gefundene Beet : " + meinGarten.getBeet(aktuellesBeet)); | |||||
System.out.println("Alle beete" + meinGarten.getBeete()); | |||||
for(Pflanze pf : meinGarten.getBeet(aktuellesBeet).getPflanzenausgruppe()) | |||||
{ | |||||
meinGarten.hinzufuegenPflanze(pf); | |||||
} | |||||
meinGarten.zeichnePflanzen(); | |||||
System.out.println("Pflanze konfiguriert"); | System.out.println("Pflanze konfiguriert"); | ||||
bepflanzungexistiert = true; | bepflanzungexistiert = true; | ||||
} | } |
private ArrayList<Pflanze> pflanzen; | private ArrayList<Pflanze> pflanzen; | ||||
private Pflanze pfl; | private Pflanze pfl; | ||||
private Pflanze1 pfl1; | |||||
private Pflanze2 pfl2; | |||||
private Pflanze3 pfl3; | |||||
int intmovePflanze; | int intmovePflanze; | ||||
FlaecheBeet flbeet; | FlaecheBeet flbeet; | ||||
FlaecheWeg flweg; | FlaecheWeg flweg; | ||||
{ | { | ||||
flbeet.zeichneBeete(beete); | flbeet.zeichneBeete(beete); | ||||
} | } | ||||
public Beet getBeet(int[] mausposition) | public Beet getBeet(int[] mausposition) | ||||
{ | { | ||||
System.out.println("Suche richtiges Beet"); | |||||
Beet tempBeet = null; | Beet tempBeet = null; | ||||
for (Beet b : beete) | for (Beet b : beete) | ||||
{ | { | ||||
int[] koordinvergleich = b.getKoordinaten(); | 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] ) | |||||
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; | tempBeet = b; | ||||
} | } | ||||
} | |||||
} | |||||
return tempBeet; | return tempBeet; | ||||
} | } | ||||
//Funktionen Wege | //Funktionen Wege | ||||
public void hinzufuegenWeg(int sx, int sy, int ex, int ey) | public void hinzufuegenWeg(int sx, int sy, int ex, int ey) | ||||
{ | { | ||||
public Boolean randomBepflanzung() | public Boolean randomBepflanzung() | ||||
{ | { | ||||
for (Beet b : beete) | for (Beet b : beete) | ||||
{ | { | ||||
try | |||||
{ | |||||
PflanzengruppenKonfigurator konfig = new PflanzengruppenKonfigurator(); | |||||
int randomAlter = (int) (Math.random() * 3 + 1); | |||||
int randomTyp = (int) (Math.random() * 3 + 1); | |||||
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); | |||||
int[] temp = b.getKoordinaten(); | |||||
int laenge; | |||||
konfig.alter(randomAlter); | |||||
konfig.pflanzenTyp(randomTyp); | |||||
if (randomTyp == 1) | |||||
{ | |||||
laenge = 30; | |||||
} | } | ||||
catch (ArithmeticException e) | |||||
else | |||||
{ | |||||
laenge = 15; | |||||
} | |||||
konfig.startlaenge(laenge); | |||||
konfig.beet(b); | |||||
konfig.erstellen(); | |||||
for (Pflanze pf : b.getPflanzenausgruppe()) | |||||
{ | { | ||||
pflanzen.removeAll(pflanzen); | |||||
return false; | |||||
hinzufuegenPflanze(pf); | |||||
} | } | ||||
} | } | ||||
zeichnePflanzen(); | zeichnePflanzen(); | ||||
randomwertex[3] = width - 50; | randomwertex[3] = width - 50; | ||||
randomwertey[3] = height - 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 | 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() * (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; | randomwertex[i] = wegendex; | ||||
randomwertey[i] = wegendey; | randomwertey[i] = wegendey; | ||||
} | } |
void setPosition(); | void setPosition(); | ||||
public ArrayList<float[]> getPoints(); | public ArrayList<float[]> getPoints(); | ||||
public void setAlgorithm(); | public void setAlgorithm(); | ||||
public float [] getBoundingBoxes(); | |||||
} | } |
* To change this template file, choose Tools | Templates | * To change this template file, choose Tools | Templates | ||||
* and open the template in the editor. | * and open the template in the editor. | ||||
*/ | */ | ||||
package garten.model; | package garten.model; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
/** | /** | ||||
* | * | ||||
* @author Jan | |||||
* @author Jan | |||||
*/ | */ | ||||
class Pflanzengruppe | class Pflanzengruppe | ||||
{ | { | ||||
private int alter; | private int alter; | ||||
private int pflanzentyp; | private int pflanzentyp; | ||||
private int startlaenge; | private int startlaenge; | ||||
private ArrayList<Pflanze> pflanzen; | private ArrayList<Pflanze> pflanzen; | ||||
private Beet beet; | private Beet beet; | ||||
Pflanze1 pfl1; | |||||
Pflanze2 pfl2; | |||||
Pflanze3 pfl3; | |||||
Pflanzengruppe(int pflanzenTyp,int alter, int startlaenge, Beet beet) | |||||
{ | |||||
Pflanze pfl; | |||||
Pflanzengruppe(int pflanzentyp, int alter, int startlaenge, Beet beet) | |||||
{ | |||||
System.out.println("Konstruktor Pflanzengruppe"); | |||||
this.alter = alter; | this.alter = alter; | ||||
this.pflanzentyp = pflanzenTyp; | |||||
this.startlaenge = startlaenge; | |||||
this.pflanzentyp = pflanzentyp; | |||||
this.startlaenge = startlaenge; | |||||
pflanzen = new ArrayList<>(); | |||||
this.beet = beet; | this.beet = beet; | ||||
beginnebepflanzung(); | |||||
} | |||||
public void beginnebepflanzung() | |||||
{ | |||||
Boolean bepflanzung = true; | |||||
Boolean versetzt = true; | |||||
int[] temp = beet.getKoordinaten(); | |||||
int tempx = temp[0] + 10; | |||||
int tempy = temp[1] + 20; | |||||
int tempxrand = temp[2] + temp[0]; | |||||
int tempyrand = temp[3] + temp[1]; | |||||
try | |||||
{ | |||||
int deltax = (temp[2] - 40) / ((temp[2] - 40) / 40); | |||||
int deltay = (temp[3] - 40) / ((temp[3] - 40) / 50); | |||||
do | |||||
{ | |||||
if (pflanzentyp == 1) | |||||
{ | |||||
pfl = new Pflanze1(tempx, tempy, alter,startlaenge); | |||||
} | |||||
else if (pflanzentyp == 2) | |||||
{ | |||||
pfl = new Pflanze2(tempx, tempy, alter,startlaenge); | |||||
} | |||||
else if (pflanzentyp == 3) | |||||
{ | |||||
pfl = new Pflanze3(tempx, tempy, alter,startlaenge); | |||||
} | |||||
pflanzen.add(pfl); | |||||
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); | |||||
beet.setPflanzengruppeBeet(this); | |||||
} | |||||
catch (ArithmeticException e) | |||||
{ | |||||
System.out.println("Beet zu klein"); | |||||
} | |||||
} | } | ||||
public void anzeigen() | |||||
public ArrayList<Pflanze> getPflanzeninGruppe() | |||||
{ | { | ||||
return pflanzen; | |||||
} | } | ||||
public ArrayList<Pflanze> beginnebepflanzung() | |||||
public void beginnebepflbox() | |||||
{ | { | ||||
beet.getKoordinaten(); | |||||
int[] randKoordinaten = beet.getKoordinaten();//großes Rechteck aufspannen welche Position schon vergeben sind | |||||
boolean platzimBeet = true; | |||||
System.out.println("Folgendes Beet bekommen: " + beet); | |||||
System.out.println("Beet hat folgende Koordinaten " +randKoordinaten[0] + " "+ randKoordinaten[1] + " " +randKoordinaten[2] + " " +randKoordinaten[3]); | |||||
int tempxstart = randKoordinaten[0]+20; | |||||
int tempystart = randKoordinaten[1]+20; | |||||
if(pflanzentyp == 1) | |||||
{ | |||||
pfl1 = new Pflanze1(alter, alter, alter, startlaenge); | |||||
pflanzen.add(pfl1); | |||||
} | |||||
else if (pflanzentyp ==2) | |||||
{ | |||||
pfl2 = new Pflanze2(alter, alter, alter, startlaenge); | |||||
pflanzen.add(pfl1); | |||||
} | |||||
else if (pflanzentyp ==3) | |||||
int xmin = randKoordinaten[0]; | |||||
int xmax = randKoordinaten[2]+randKoordinaten[0]; | |||||
int ymax = randKoordinaten[3]+randKoordinaten[1]; | |||||
int[] temprechteck = new int[4]; | |||||
temprechteck[0] = randKoordinaten[0]; | |||||
temprechteck[1] = randKoordinaten[1]; | |||||
temprechteck[2] = randKoordinaten[0]; | |||||
temprechteck[3] = randKoordinaten[1]; | |||||
do | |||||
{ | { | ||||
pfl3 = new Pflanze3(alter, alter, alter, startlaenge); | |||||
pflanzen.add(pfl1); | |||||
float[] koordvergleich; | |||||
if (pflanzentyp == 1) | |||||
{ | |||||
pfl = new Pflanze1(tempxstart, tempystart, alter, startlaenge); | |||||
} | |||||
else if (pflanzentyp == 2) | |||||
{ | |||||
pfl = new Pflanze2(tempxstart, tempystart, alter, startlaenge); | |||||
} | |||||
else if (pflanzentyp == 3) | |||||
{ | |||||
pfl = new Pflanze3(tempxstart, tempystart, alter, startlaenge); | |||||
} | |||||
koordvergleich = pfl.getBoundingBoxes(); | |||||
// System.out.println("Pflanze hat folgende Koordinaten " + koordvergleich[0] + " "+ koordvergleich[1] + " "+ xmax + " "+ ymax); | |||||
//System.out.println("Temprechteck 2: " + temprechteck[2] + " Koordvergleich 2: " + koordvergleich[2] + " Xmax : " + xmax); | |||||
if(temprechteck[2]< koordvergleich[2] && koordvergleich[2]<xmax) | |||||
{ | |||||
temprechteck[2] = (int) koordvergleich[2]; | |||||
tempxstart =temprechteck[2]+20; | |||||
if(temprechteck[3]<koordvergleich[3]) | |||||
{ | |||||
temprechteck[3]= (int)koordvergleich[3]; | |||||
} | |||||
pflanzen.add(pfl); | |||||
} | |||||
else | |||||
tempxstart +=40; | |||||
if(koordvergleich[2] > xmax && koordvergleich[3]< ymax) | |||||
{ | |||||
temprechteck[0] = xmin; | |||||
temprechteck[2] = xmin; | |||||
tempxstart = temprechteck[0]+20; | |||||
tempystart = temprechteck[3]+temprechteck[3]-temprechteck[0]+20; | |||||
System.out.println("Y-Achse wert erhöhen"); | |||||
} | |||||
if(ymax < koordvergleich[3] && xmax < koordvergleich[2]) | |||||
{ | |||||
platzimBeet = false; | |||||
} | |||||
} | } | ||||
return pflanzen; | |||||
while (platzimBeet); | |||||
System.out.println("Pflanzengruppe erstellt und folgenden Pflanzen hinzugefügt"); | |||||
System.out.println(pflanzen); | |||||
beet.setPflanzengruppeBeet(this); | |||||
} | } | ||||
} | |||||
} |
popup.addSeparator(); | popup.addSeparator(); | ||||
popup.add(mnbepflanzen3); | popup.add(mnbepflanzen3); | ||||
popup.setLightWeightPopupEnabled(false); | |||||
//flbeet.setComponentPopupMenu(popup); | |||||
//popup.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); | |||||
this.setTitle("Garten von Paul und Jan"); | this.setTitle("Garten von Paul und Jan"); | ||||
this.pack(); | this.pack(); | ||||
this.setDefaultCloseOperation(EXIT_ON_CLOSE); | this.setDefaultCloseOperation(EXIT_ON_CLOSE); | ||||
}); | }); | ||||
this.add(popup); | |||||
//this.add(popup); | |||||
} | } |