diff --git a/enigme.java/Action.java b/enigme.java/Action.java index 6317f78..5665fb1 100644 --- a/enigme.java/Action.java +++ b/enigme.java/Action.java @@ -23,6 +23,20 @@ public class Action { this.descriptions = descriptions; } + void actionner() { + for (Connaissance c : this.connaissances) { + if (!Jeu.explorateur.connaissances.contains(c)) { + Jeu.explorateur.connaissances.add(c); + } + } + for (Objet o : this.objetsRecus) { + Jeu.explorateur.objets.add(o); + } + for (Objet o : this.objetsConso) { + Jeu.explorateur.objets.remove(o); + } + } + @Override public String toString() { for (Description d : this.descriptions) { diff --git a/enigme.java/ConditionBoolean.java b/enigme.java/ConditionBoolean.java index e9517ea..383769a 100644 --- a/enigme.java/ConditionBoolean.java +++ b/enigme.java/ConditionBoolean.java @@ -6,6 +6,6 @@ public class ConditionBoolean implements ConditionTest { } public Boolean evaluer() { - return bool; + return this.bool; } } diff --git a/enigme.java/Connaissance.java b/enigme.java/Connaissance.java index 6f2866f..044e202 100644 --- a/enigme.java/Connaissance.java +++ b/enigme.java/Connaissance.java @@ -18,9 +18,9 @@ public class Connaissance { public String toString() { for (Description d : this.descriptions) { if (d.condition.evaluer()) { - return this.nom + ": " + d; + return "(" + this.nom + " : " + d + ")"; } } - return "No desc"; + return "(" + this.nom + ")"; } } diff --git a/enigme.java/Explorateur.java b/enigme.java/Explorateur.java index bdf586b..7a58a88 100644 --- a/enigme.java/Explorateur.java +++ b/enigme.java/Explorateur.java @@ -16,13 +16,15 @@ public class Explorateur { @Override public String toString() { - String txt = new String(); + String txt = "Objets :\n"; for (Objet c : this.objets) { - txt.concat(c.toString()); + txt += c + " "; } + txt += "\n\nConnaissances :\n"; for (Connaissance c : this.connaissances) { - txt.concat(c.toString()); + txt += c + " "; } + txt += "\n==================================================="; return txt; } diff --git a/enigme.java/Interaction.java b/enigme.java/Interaction.java index 806b3db..4e059f9 100644 --- a/enigme.java/Interaction.java +++ b/enigme.java/Interaction.java @@ -1,4 +1,8 @@ import java.util.List; +import java.util.ArrayList; +import java.io.InputStreamReader; +import java.io.BufferedReader; +import java.io.IOException; public class Interaction { Condition visible; @@ -20,13 +24,44 @@ public class Interaction { this.actions = actions; } + void interragir(BufferedReader reader, Lieu lieu) { + boolean arreter_interraction = false; + + while (!arreter_interraction) { + System.out.println(this); + System.out.print("\nChoix : "); + + List actions_choix = new ArrayList<>(); + for (Action a : this.actions) { + if (a.visible.evaluer()) { + actions_choix.add(a); + } + } + int choix = 0; + Action a = null; + try { + choix = Integer.parseInt(reader.readLine()); + a = actions_choix.get(choix); + } catch (NumberFormatException e) { + continue; + } catch (IndexOutOfBoundsException e) { + continue; + } catch (IOException e) { + e.printStackTrace(); + } + a.actionner(); + + arreter_interraction = a.finInterraction.evaluer(); + } + } + @Override public String toString() { - String res = "Interraction :"; + String res = ""; int k = 0; for (Action a : this.actions) { if (a.visible.evaluer()) { - res += "\n" + k + " " + a; + res += "[" + k + "] " + a + "\n"; k++; } } diff --git a/enigme.java/Jeu.java b/enigme.java/Jeu.java index ad7e006..99df378 100644 --- a/enigme.java/Jeu.java +++ b/enigme.java/Jeu.java @@ -37,100 +37,81 @@ public class Jeu { } while (!lieu.fin.evaluer()) { - System.out.println(Jeu.explorateur); - boolean reverifier_interraction = true; - while (reverifier_interraction) { - reverifier_interraction = false; - for (Personne p : lieu.personnes) { - if (p.visible.evaluer() && p.obligatoire.evaluer()) { - for (Interaction i : p.interractions) { - if (i.visible.evaluer()) { - System.out.println(i); - boolean arreter_interraction = false; - while (!arreter_interraction) { - List actions_choix = new ArrayList<>(); - for (Action a : i.actions) { - if (a.visible.evaluer()) { - actions_choix.add(a); - } - } - int choix = 0; - try { - choix = Integer.parseInt(reader.readLine()); - } catch (NumberFormatException e) { - continue; - } catch (IOException e) { - e.printStackTrace(); - } - Action a = actions_choix.get(choix); - for (Connaissance c : a.connaissances) { - if (!Jeu.explorateur.connaissances.contains(c)) { - Jeu.explorateur.connaissances.add(c); - } - } - for (Objet o : a.objetsRecus) { - Jeu.explorateur.objets.add(o); - } - for (Objet o : a.objetsConso) { - Jeu.explorateur.objets.remove(o); - } + boolean recommencer = false; - arreter_interraction = a.finInterraction.evaluer(); - } - } - } - reverifier_interraction = true; - } + System.out.println("\n\n\n\n\n\n\n\n\n\nLieu : " + lieu + "\n"); + System.out.println(Jeu.explorateur); + + for (Personne p : lieu.personnes) { + if (p.visible.evaluer() && p.obligatoire.evaluer()) { + System.out.println(p + " :"); + + p.interragir(reader, lieu); + recommencer = true; + break; } } + if (recommencer) { + continue; + } - boolean chemin_pris = false; for (Chemin c : territoire.chemins) { if (c.lieuIn == lieu) { if (c.visible.evaluer() && c.obligatoire.evaluer() && c.ouvert.evaluer()) { lieu = c.lieuOut; - chemin_pris = true; + recommencer = true; + break; + } + } + } + if (recommencer) { + continue; + } + + int k = 0; + List chemins_choix = new ArrayList<>(); + for (Chemin c : territoire.chemins) { + if (c.lieuIn == lieu) { + if (c.visible.evaluer() && c.ouvert.evaluer()) { + chemins_choix.add(c); + System.out.println("[" + k + "] " + c); + k++; } } } - if (!chemin_pris) { - int k = 0; - List chemins_choix = new ArrayList<>(); - for (Chemin c : territoire.chemins) { - if (c.lieuIn == lieu) { - if (c.visible.evaluer() && c.ouvert.evaluer()) { - chemins_choix.add(c); - System.out.println(k + " " + c); - k++; - } + List personnes_choix = new ArrayList<>(); + for (Personne p : personnes) { + if (lieu.personnes.contains(p)) { + if (p.visible.evaluer()) { + personnes_choix.add(p); + System.out.println("[" + k + "] " + p); + k++; } } + } - List personnes_choix = new ArrayList<>(); - for (Personne p : personnes) { - if (lieu.personnes.contains(p)) { - if (p.visible.evaluer()) { - personnes_choix.add(p); - System.out.println(p); - k++; - } - } - } - - int choix = 0; - try { - choix = Integer.parseInt(reader.readLine()); - } catch (NumberFormatException e) { - continue; - } catch (IOException e) { - e.printStackTrace(); - } + int choix = 0; + try { + System.out.print("\nChoix : "); + choix = Integer.parseInt(reader.readLine()); if (choix < chemins_choix.size()) { lieu = chemins_choix.get(choix).lieuOut; } else { + Personne p = personnes_choix.get(choix - chemins_choix.size()); + System.out.println("\n\n\n\n\n\n\n\n\n\nLieu : " + lieu + "\n"); + System.out.println(Jeu.explorateur); + System.out.println(p + " :"); + + p.interragir(reader, lieu); } + } catch (NumberFormatException e) { + continue; + } catch (IndexOutOfBoundsException e) { + continue; + } catch (IOException e) { + e.printStackTrace(); } } @@ -297,6 +278,10 @@ public class Jeu { List chemins = new ArrayList<>(); + List descriptions_chemin_enigme_succes = new ArrayList<>(); + + descriptions_chemin_enigme_succes.add(new Description("Route du succes", vraie)); + Chemin enigme_succes = new Chemin( enigme, succes, @@ -306,9 +291,13 @@ public class Jeu { new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), - new ArrayList<>()); + descriptions_chemin_enigme_succes); chemins.add(enigme_succes); + List descriptions_chemin_enigme_echec = new ArrayList<>(); + + descriptions_chemin_enigme_echec.add(new Description("Chemin de la mort", vraie)); + Chemin enigme_echec = new Chemin( enigme, echec, @@ -318,7 +307,7 @@ public class Jeu { new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), - new ArrayList<>()); + descriptions_chemin_enigme_echec); chemins.add(enigme_echec); Territoire territoire = new Territoire( diff --git a/enigme.java/Lieu.java b/enigme.java/Lieu.java index efc6dd9..4be1123 100644 --- a/enigme.java/Lieu.java +++ b/enigme.java/Lieu.java @@ -28,4 +28,9 @@ public class Lieu { this.objets = objets; this.connaissances = connaissances; } + + @Override + public String toString() { + return nom; + } } diff --git a/enigme.java/Objet.java b/enigme.java/Objet.java index efd1ed5..79c35fa 100644 --- a/enigme.java/Objet.java +++ b/enigme.java/Objet.java @@ -21,9 +21,9 @@ public class Objet { public String toString() { for (Description d : this.descriptions) { if (d.condition.evaluer()) { - return this.nom + ": " + d; + return "(" + this.nom + ": " + d + ")"; } } - return "No desc"; + return "(" + this.nom + ")"; } } diff --git a/enigme.java/Personne.java b/enigme.java/Personne.java index 72bfb46..f773195 100644 --- a/enigme.java/Personne.java +++ b/enigme.java/Personne.java @@ -1,4 +1,6 @@ import java.util.List; +import java.io.InputStreamReader; +import java.io.BufferedReader; public class Personne { String nom; @@ -16,4 +18,18 @@ public class Personne { this.obligatoire = obligatoire; this.interractions = interractions; } + + void interragir(BufferedReader reader, Lieu lieu) { + for (Interaction i : this.interractions) { + if (i.visible.evaluer()) { + i.interragir(reader, lieu); + } + break; + } + } + + @Override + public String toString() { + return nom; + } }