You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Garten.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package garten.model;
  7. import garten.view.FlaecheBeet;
  8. import garten.view.FlaechePflanzen;
  9. import garten.view.FlaecheWeg;
  10. import java.awt.event.MouseEvent;
  11. import java.util.ArrayList;
  12. /**
  13. *
  14. * @author Jan
  15. */
  16. public class Garten extends Kompositum
  17. {
  18. private ArrayList<Weg> wege;
  19. private ArrayList<Beet> beete;
  20. private ArrayList<Pflanze> pflanzen;
  21. private Pflanze pfl;
  22. int intmovePflanze;
  23. FlaecheBeet flbeet;
  24. FlaecheWeg flweg;
  25. FlaechePflanzen flpfl;
  26. public Garten(FlaecheBeet flbeet, FlaecheWeg flweg, FlaechePflanzen flpfl)
  27. {
  28. wege = new ArrayList();
  29. beete = new ArrayList();
  30. pflanzen = new ArrayList();
  31. this.flbeet = flbeet;
  32. this.flweg = flweg;
  33. this.flpfl = flpfl;
  34. }
  35. //Funktionen Beete
  36. public void hinzufuegenBeet(int x, int y, int a, int b)
  37. {
  38. Beet neuesBeet = new Beet(x, y, a, b);
  39. beete.add(neuesBeet);
  40. }
  41. public ArrayList<Beet> getBeete()
  42. {
  43. return beete;
  44. }
  45. public void zeichneBeete()
  46. {
  47. flbeet.zeichneBeete(beete);
  48. }
  49. public Beet getBeet(MouseEvent e)
  50. {
  51. Beet tempBeet = null;
  52. for (Beet b : beete)
  53. {
  54. int[] koordinvergleich = b.getKoordinaten();
  55. if (koordinvergleich[0] < e.getX() && koordinvergleich[1] < e.getY() && (koordinvergleich[2] + koordinvergleich[0]) > e.getX() && (koordinvergleich[3] + koordinvergleich[1]) > e.getY())
  56. {
  57. tempBeet = b;
  58. }
  59. }
  60. return tempBeet;
  61. }
  62. //Funktionen Wege
  63. public void hinzufuegenWeg(int sx, int sy, int ex, int ey)
  64. {
  65. Weg neuerWeg = new Weg(sx, sy, ex, ey);
  66. wege.add(neuerWeg);
  67. }
  68. public void zeichneWeg()
  69. {
  70. flweg.zeichneWeg(wege);
  71. }
  72. //Funktionen Pflanzen
  73. public void hinzufuegenPflanze(Pflanze pflanze)
  74. {
  75. pflanzen.add(pflanze);
  76. }
  77. public void zeichnePflanzen()
  78. {
  79. flpfl.setPflanzen(pflanzen);
  80. }
  81. public Boolean randomBepflanzung()
  82. {
  83. for (Beet b : beete)
  84. {
  85. PflanzengruppenKonfigurator konfig = new PflanzengruppenKonfigurator();
  86. int randomAlter = (int) (Math.random() * 2 + 1);
  87. int randomTyp = (int) (Math.random() * 3 + 1);
  88. int[] temp = b.getKoordinaten();
  89. int laenge;
  90. konfig.alter(randomAlter);
  91. konfig.pflanzenTyp(randomTyp);
  92. if (randomTyp == 1)
  93. {
  94. laenge = 30;
  95. }
  96. else
  97. {
  98. laenge = 15;
  99. }
  100. konfig.startlaenge(laenge);
  101. konfig.beet(b);
  102. konfig.erstellen();
  103. for (Pflanze pf : b.getPflanzenausgruppe())
  104. {
  105. hinzufuegenPflanze(pf);
  106. }
  107. }
  108. zeichnePflanzen();
  109. return true;
  110. }
  111. public void löscheBepflanzung()
  112. {
  113. pflanzen.removeAll(pflanzen);
  114. flpfl.löschePflanzen();
  115. }
  116. public void erstelleGarten()
  117. {
  118. int height = flbeet.getHeight();
  119. int width = flbeet.getWidth();
  120. int[] randomwertex = new int[4];
  121. int[] randomwertey = new int[4];
  122. randomwertex[0] = 10;
  123. randomwertey[0] = 10;
  124. randomwertex[3] = width - 50;
  125. randomwertey[3] = height - 50;
  126. int deltax = randomwertex[3] / 3;
  127. int deltay = randomwertey[3] / 3;
  128. for (int i = 1; i < 3; i++) //erstelle Random Punkte für Wege + Beete
  129. {
  130. //int wegendex = (int) (Math.random() * (170 * i) + (200 * i));
  131. //int wegendey = (int) (Math.random() * (170 * i) + (200 * i));
  132. int wegendex = (int) (Math.random() * ((randomwertex[3] / 3 - 40 * i) * i) + (randomwertex[3] / 4 * i));
  133. int wegendey = (int) (Math.random() * ((randomwertey[3] / 3 - 40 * i) * i) + (randomwertey[3] / 4 * i));
  134. randomwertex[i] = wegendex;
  135. randomwertey[i] = wegendey;
  136. }
  137. for (int i = 0; i < randomwertex.length; i++) //Garten Wege hinzufügen
  138. {
  139. hinzufuegenWeg(randomwertex[i], randomwertey[0], randomwertex[i], randomwertey[3]);
  140. hinzufuegenWeg(randomwertex[0], randomwertey[i], randomwertex[3], randomwertey[i]);
  141. }
  142. for (int i = 0; i < randomwertex.length - 1; i++) //Garten Beete hinzufügen
  143. {
  144. for (int j = 0; j < randomwertey.length - 1; j++)
  145. {
  146. hinzufuegenBeet(randomwertex[i] + 10, randomwertey[j] + 10, randomwertex[i + 1] - randomwertex[i] - 20, randomwertey[j + 1] - randomwertey[j] - 20);
  147. }
  148. }
  149. zeichneWeg();
  150. zeichneBeete();
  151. }
  152. public void löscheGarten()
  153. {
  154. wege.removeAll(wege);
  155. beete.removeAll(beete);
  156. pflanzen.removeAll(pflanzen);
  157. flpfl.löschePflanzen();
  158. flbeet.löscheBeete();
  159. flweg.löscheWeg();
  160. }
  161. public Pflanze getmovePflanze(MouseEvent e)
  162. {
  163. Pflanze diePflanze = null;
  164. Beet StartBeet = null;
  165. int abstand = 15;
  166. for (int i = 0; i < pflanzen.size(); i++)
  167. {
  168. if (Math.abs(pflanzen.get(i).getPositionx() - e.getX()) + Math.abs(pflanzen.get(i).getPositiony() - e.getY()) < abstand)
  169. {
  170. diePflanze = pflanzen.get(i);
  171. StartBeet = getBeet(e);
  172. abstand = Math.abs(pflanzen.get(i).getPositionx() - e.getX()) + Math.abs(pflanzen.get(i).getPositiony() - e.getY());
  173. System.out.println("Pflanze: " + diePflanze.getPositionx() + " " + diePflanze.getPositiony());
  174. intmovePflanze = i;
  175. System.out.println("Alte Position: " + pflanzen.get(intmovePflanze).getPositionx() + " " + pflanzen.get(intmovePflanze).getPositiony());
  176. }
  177. }
  178. StartBeet.pflgruppe.removePflanze(diePflanze);
  179. return diePflanze;
  180. }
  181. public void setmovePflanze(MouseEvent e)
  182. {
  183. pflanzen.get(intmovePflanze).setPositionx(e.getX());
  184. pflanzen.get(intmovePflanze).setPositiony(e.getY());
  185. pflanzen.get(intmovePflanze).setAlgorithm();
  186. getBeet(e).pflgruppe.addPflanze(pflanzen.get(intmovePflanze));
  187. zeichnePflanzen();
  188. }
  189. public void removePflanzen(ArrayList<Pflanze> pfl)
  190. {
  191. for(Pflanze p: pfl)
  192. {
  193. pflanzen.remove(p);
  194. }
  195. }
  196. }