-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jardin.java
178 lines (146 loc) · 5.74 KB
/
Jardin.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import java.util.AbstractMap.SimpleEntry;
import java.util.HashMap;
import java.util.Observable;
import Flore.Ail;
import Flore.Betterave;
import Flore.Carotte;
import Flore.Etat;
import Flore.Tomate;
public class Jardin extends Observable {
private int longueur;
private int largeur;
private Emplacement[][] emplacements;
private HashMap<String, Integer> panier;
public Jardin(int longueur, int largeur) {
this.longueur = longueur;
this.largeur = largeur;
this.emplacements = new Emplacement[this.longueur][this.largeur];
this.panier = new HashMap<String, Integer>();
//On ajoute des graines dans le panier de notre Jardin qui est dans notre serre
this.AjouterPanier("Tomate", 5);
this.AjouterPanier("Carotte", 5);
this.AjouterPanier("Ail", 10);
this.AjouterPanier("Betterave", 5);
}
public void AjouterPanier(String nomDuVegetal,int nbGraines) {
this.panier.put(nomDuVegetal, nbGraines);
}
public void semer(int positionX, int positionY,int choix ) {
//Exception de position
switch (choix) {
case 1 :
this.emplacements[positionX][positionY] = new Emplacement(new Ail()); //Ail
this.panier.put("Ail", this.panier.get("Ail")-1);
break;
case 2 :
this.emplacements[positionX][positionY] = new Emplacement(new Betterave()); //Betterave
this.panier.put("Ail", this.panier.get("Betterave")-1);
break;
case 3:
this.emplacements[positionX][positionY] = new Emplacement(new Carotte()); //Carotte
this.panier.put("Ail", this.panier.get("Carotte")-1);
break;
case 4 :
this.emplacements[positionX][positionY] = new Emplacement(new Tomate()); //Tomate
this.panier.put("Ail", this.panier.get("Tomate")-1);
break;
}
}
public String RetournerJardin() {
String chaineTemp;
String chaineFinale = "\n";
for (int x = 0; x < this.longueur; x++) {
for (int y = 0; y < this.largeur; y++) {
if (this.emplacements[x][y] != null) { //Si le caractère existe ><
chaineTemp = String.format("%c", this.emplacements[x][y].getVegetal().getChar( this.emplacements[x][y].getVegetal().getEtat().ordinal() ));//On affiche le caractère
chaineFinale = chaineFinale.concat(chaineTemp);
}else {
chaineTemp = String.format("%c", 'o'); //Sinon on affiche o
chaineFinale = chaineFinale.concat(chaineTemp);
}
}
chaineFinale = chaineFinale.concat("\n");
}
return chaineFinale;
}
public void saisonSuivante() {
for (int x = 0; x < this.longueur; x++) {
for (int y = 0; y < this.largeur; y++) {
if (this.emplacements[x][y] != null) {
if (this.emplacements[x][y].getVegetal().getEtat() != (Etat.MORT)) {
this.emplacements[x][y].getVegetal().grandir();
}
}
}
}
}
public void recolter(int x, int y) {
if (this.emplacements[x][y] == null)//On vérifie que les emplacements comportent des plantes
return;
if (this.emplacements[x][y].getVegetal().getEtat() == (Etat.FLEUR)){ // On vérifie l'état des fleurs
//On récupère le nom du légume
String chaine = this.emplacements[x][y].getVegetal().getClass().getName();
String chaineASupprimer="Flore."; //On retire le nom
chaine = chaine.replace(chaineASupprimer, "");
this.emplacements[x][y].getVegetal().FaireRacePure(panier, chaine); //On fais l'action des races pures
SimpleEntry<Integer, Integer> nouvellePosition = this.emplacements[x][y].getVegetal().FaireOGM(this.longueur, this.largeur); //On fais l'action des OGM
if (nouvellePosition != null) {
switch (this.emplacements[x][y].getVegetal().getChar(4)) { //Comment le créer sans le char ?
case 'A' :
this.emplacements[nouvellePosition.getKey()][nouvellePosition.getValue()] = new Emplacement(new Ail());
break;
case 'B' :
this.emplacements[nouvellePosition.getKey()][nouvellePosition.getValue()] = new Emplacement(new Betterave());
break;
case 'C' :
this.emplacements[nouvellePosition.getKey()][nouvellePosition.getValue()] = new Emplacement(new Carotte());
break;
case 'T' :
this.emplacements[nouvellePosition.getKey()][nouvellePosition.getValue()] = new Emplacement(new Tomate());
break;
//Possibilité de modifier le comportement en exploitant le pattern Stratégie
}
}
this.emplacements[x][y] = null;
}
}
@Override
public String toString() {
return String.format("Voici notre jardin :\n %s\n Et notre panier contient :\n Tomate : %d graine(s) \n Carotte : %d graine(s)\n Ail : %d graine(s)\n Betterave : %d graine(s)",RetournerJardin()
,this.panier.get("Tomate"),this.panier.get("Carotte"),this.panier.get("Ail"),this.panier.get("Betterave"));
}
/*ACCESSEURS*/
public Emplacement[][] getEmplacements() {
return emplacements;
}
public void setEmplacements(Emplacement[][] emplacements) {
this.emplacements = emplacements;
}
public int getLongueur() {
return longueur;
}
public void setLongueur(int longueur) {
this.longueur = longueur;
}
public int getLargeur() {
return largeur;
}
public void setLargeur(int largeur) {
this.largeur = largeur;
}
public HashMap<String, Integer> getPanier() {
return panier;
}
public void setPanier(HashMap<String, Integer> panier) {
this.panier = panier;
}
//Va être déclanché toutes les cinq secondes
public void actualiserMesures() {
setChanged(); //L'état à changé = Notification ! C'est lui le bijoux pour indiquer qu'on autorise
notifyObservers(); //Va MAJ si setChanged == true
}
public void setMAJPousse(Emplacement[][] emplacement) {
this.emplacements = emplacement;
actualiserMesures();
}
}