import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Jeu { public static Explorateur explorateur; Territoire territoire; List objets; List connaissances; List personnes; List transformations; public Jeu( Territoire territoire, List objets, List connaissances, List personnes, List transformations) { this.territoire = territoire; this.objets = objets; this.connaissances = connaissances; this.personnes = personnes; this.transformations = transformations; } public static void clearScreen() { System.out.print("\033[H\033[2J"); System.out.flush(); } void jouer() { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Lieu lieu = null; for (Lieu l : territoire.lieux) { if (l.depart.evaluer()) { lieu = l; break; } } while (!lieu.fin.evaluer()) { boolean recommencer = false; clearScreen(); System.out.println("Lieu : " + 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; } for (Chemin c : territoire.chemins) { if (c.lieuIn == lieu) { if (c.visible.evaluer() && c.obligatoire.evaluer() && c.ouvert.evaluer()) { lieu = c.lieuOut; 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++; } } } 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++; } } } 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()); clearScreen(); System.out.println("Lieu : " + 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(); } } System.out.println("FIN : " + lieu.nom); } }