feat: du progrès côté mtl (?)

This commit is contained in:
Laurent Fainsin 2021-12-09 18:54:08 +01:00
parent fd88a85f10
commit e5255f922e
27 changed files with 10057 additions and 699 deletions

View file

@ -0,0 +1,49 @@
import java.util.List;
public class Action {
Condition visible;
List<Connaissance> connaissances;
List<Objet> objetsRecus;
List<Objet> objetsConso;
Condition finInterraction;
List<Description> descriptions;
public Action(
Condition visible,
List<Connaissance> connaissances,
List<Objet> objetsRecus,
List<Objet> objetsConso,
Condition finInterraction,
List<Description> descriptions) {
this.visible = visible;
this.connaissances = connaissances;
this.objetsRecus = objetsRecus;
this.objetsConso = objetsConso;
this.finInterraction = finInterraction;
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) {
if (d.condition.evaluer()) {
return d.toString();
}
}
return "No desc";
}
}

View file

@ -0,0 +1,45 @@
import java.util.List;
public class Chemin {
Lieu lieuIn;
Lieu lieuOut;
Condition ouvert;
Condition visible;
Condition obligatoire;
List<Connaissance> connaissancesRecus;
List<Objet> objetsRecus;
List<Objet> objetsConso;
List<Description> descriptions;
public Chemin(
Lieu lieuIn,
Lieu lieuOut,
Condition ouvert,
Condition visible,
Condition obligatoire,
List<Connaissance> connaissancesRecus,
List<Objet> objetsRecus,
List<Objet> objetsConso,
List<Description> descriptions) {
this.lieuIn = lieuIn;
this.lieuOut = lieuOut;
this.ouvert = ouvert;
this.visible = visible;
this.obligatoire = obligatoire;
this.connaissancesRecus = connaissancesRecus;
this.objetsRecus = objetsRecus;
this.objetsConso = objetsConso;
this.descriptions = descriptions;
}
@Override
public String toString() {
for (Description d : descriptions) {
if (d.condition.evaluer()) {
return d.toString();
}
}
return "No desc";
}
}

View file

@ -0,0 +1,21 @@
import java.util.List;
import java.util.ArrayList;
public class Condition {
List<ConditionEt> conditionEts;
public Condition(List<ConditionEt> conditionEts) {
this.conditionEts = conditionEts;
}
public Boolean evaluer() {
for (ConditionEt cond : conditionEts) {
if (cond.evaluer()) {
return true;
}
}
return false;
}
}

View file

@ -0,0 +1,11 @@
public class ConditionBoolean implements ConditionTest {
Boolean bool;
public ConditionBoolean(Boolean bool) {
this.bool = bool;
}
public Boolean evaluer() {
return this.bool;
}
}

View file

@ -0,0 +1,21 @@
public class ConditionConnaissance implements ConditionTest {
Connaissance connaissance;
Boolean negation;
public ConditionConnaissance(
Connaissance connaissance,
Boolean negation) {
this.connaissance = connaissance;
this.negation = negation;
}
public Boolean evaluer() {
if (Jeu.explorateur.connaissances.contains(this.connaissance)) {
return !this.negation;
} else {
return this.negation;
}
}
}

View file

@ -0,0 +1,21 @@
import java.util.List;
import java.util.ArrayList;
public class ConditionEt {
List<ConditionTest> conditionTests;
public ConditionEt(List<ConditionTest> conditionTests) {
this.conditionTests = conditionTests;
}
public Boolean evaluer() {
for (ConditionTest cond : conditionTests) {
if (!cond.evaluer()) {
return false;
}
}
return true;
}
}

View file

@ -0,0 +1,39 @@
public class ConditionObjet implements ConditionTest {
Objet objet;
String operateur;
int nombre;
public ConditionObjet(
Objet objet,
String operateur,
int nombre) {
this.objet = objet;
this.operateur = operateur;
this.nombre = nombre;
}
public Boolean evaluer() {
int compteur = 0;
for (Objet obj : Jeu.explorateur.objets) {
if (obj.equals(this.objet)) {
compteur++;
}
}
if (this.operateur.equals("<")) {
return compteur < nombre;
} else if (this.operateur.equals(">")) {
return compteur > nombre;
} else if (this.operateur.equals("==")) {
return compteur == nombre;
} else if (this.operateur.equals("<=")) {
return compteur <= nombre;
} else if (this.operateur.equals(">=")) {
return compteur >= nombre;
} else if (this.operateur.equals("!=")) {
return compteur != nombre;
} else {
throw new Error("dafuk");
}
}
}

View file

@ -0,0 +1,5 @@
public interface ConditionTest {
public Boolean evaluer();
}

View file

@ -0,0 +1,26 @@
import java.util.List;
public class Connaissance {
String nom;
Condition visible;
List<Description> descriptions;
public Connaissance(
String nom,
Condition visible,
List<Description> descriptions) {
this.nom = nom;
this.visible = visible;
this.descriptions = descriptions;
}
@Override
public String toString() {
for (Description d : this.descriptions) {
if (d.condition.evaluer()) {
return "(" + this.nom + " : " + d + ")";
}
}
return "(" + this.nom + ")";
}
}

View file

@ -0,0 +1,16 @@
public class Description {
String texte;
Condition condition;
public Description(
String texte,
Condition condition) {
this.texte = texte;
this.condition = condition;
}
@Override
public String toString() {
return this.texte;
}
}

View file

@ -0,0 +1,31 @@
import java.util.List;
public class Explorateur {
int taille;
List<Connaissance> connaissances;
List<Objet> objets;
public Explorateur(
int taille,
List<Connaissance> connaissances,
List<Objet> objets) {
this.taille = taille;
this.connaissances = connaissances;
this.objets = objets;
}
@Override
public String toString() {
String txt = "Objets :\n";
for (Objet c : this.objets) {
txt += c + " ";
}
txt += "\n\nConnaissances :\n";
for (Connaissance c : this.connaissances) {
txt += c + " ";
}
txt += "\n===================================================";
return txt;
}
}

View file

@ -0,0 +1,70 @@
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;
List<Connaissance> connaissances;
List<Objet> objetsRecus;
List<Objet> objetsConso;
List<Action> actions;
public Interaction(
Condition visible,
List<Connaissance> connaissances,
List<Objet> objetsRecus,
List<Objet> objetsConso,
List<Action> actions) {
this.visible = visible;
this.connaissances = connaissances;
this.objetsRecus = objetsRecus;
this.objetsConso = objetsConso;
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<Action> 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 = "";
int k = 0;
for (Action a : this.actions) {
if (a.visible.evaluer()) {
res += "[" + k + "] " + a + "\n";
k++;
}
}
return res;
}
}

View file

@ -0,0 +1,120 @@
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<Objet> objets;
List<Connaissance> connaissances;
List<Personne> personnes;
List<Transformation> transformations;
public Jeu(
Territoire territoire,
List<Objet> objets,
List<Connaissance> connaissances,
List<Personne> personnes,
List<Transformation> transformations) {
this.territoire = territoire;
this.objets = objets;
this.connaissances = connaissances;
this.personnes = personnes;
this.transformations = transformations;
}
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;
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;
}
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<Chemin> 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<Personne> 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());
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();
}
}
System.out.println("FIN : " + lieu.nom);
}
}

View file

@ -0,0 +1,36 @@
import java.util.List;
public class Lieu {
String nom;
Condition deposable;
Condition depart;
Condition fin;
List<Personne> personnes;
List<Description> descriptions;
List<Objet> objets;
List<Connaissance> connaissances;
public Lieu(
String nom,
Condition deposable,
Condition depart,
Condition fin,
List<Personne> personnes,
List<Description> descriptions,
List<Objet> objets,
List<Connaissance> connaissances) {
this.nom = nom;
this.deposable = deposable;
this.depart = depart;
this.fin = fin;
this.personnes = personnes;
this.descriptions = descriptions;
this.objets = objets;
this.connaissances = connaissances;
}
@Override
public String toString() {
return nom;
}
}

View file

@ -0,0 +1,29 @@
import java.util.List;
public class Objet {
String nom;
int taille;
Condition visible;
List<Description> descriptions;
public Objet(
String nom,
int taille,
Condition visible,
List<Description> descriptions) {
this.nom = nom;
this.taille = taille;
this.visible = visible;
this.descriptions = descriptions;
}
@Override
public String toString() {
for (Description d : this.descriptions) {
if (d.condition.evaluer()) {
return "(" + this.nom + ": " + d + ")";
}
}
return "(" + this.nom + ")";
}
}

View file

@ -0,0 +1,35 @@
import java.util.List;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Personne {
String nom;
Condition visible;
Condition obligatoire;
List<Interaction> interactions;
public Personne(
String nom,
Condition visible,
Condition obligatoire,
List<Interaction> interactions) {
this.nom = nom;
this.visible = visible;
this.obligatoire = obligatoire;
this.interactions = interactions;
}
void interragir(BufferedReader reader, Lieu lieu) {
for (Interaction i : this.interactions) {
if (i.visible.evaluer()) {
i.interragir(reader, lieu);
}
break;
}
}
@Override
public String toString() {
return nom;
}
}

View file

@ -1,675 +0,0 @@
public class Prototype {
public static void main(String[] args) {
// "Objets"
List<Objet> jeu_objets = new ArrayList<>();
List<Description> objet_tentative_descriptions = new ArrayList<>();
List<ConditionEt> objet_tentative_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> objet_tentative_description_1_conditions_TEST_1 = new ArrayList<>();
objet_tentative_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
objet_tentative_description_1_conditions_ET.add(objet_tentative_description_1_conditions_TEST_1)
Condition objet_tentative_description_1_condition = new Condition(objet_tentative_description_1_conditions_ET);
objet_tentative_descriptions.add(
new Description(
"permet repondre une question du sphinx",
objet_tentative_description_1_condition
)
);
List<ConditionEt> objet_visible_tentative_conditions_ET = new ArrayList<>();
List<ConditionTest> objet_visible_tentative_conditions_TEST_1 = new ArrayList<>();
objet_visible_tentative_conditions_TEST_1.add(
new ConditionBoolean(true)
);
objet_visible_tentative_conditions_ET.add(objet_visible_tentative_conditions_TEST_1)
Condition objet_visible_tentative_condition = new Condition(objet_visible_tentative_conditions_ET);
Objet objet_tentative = new Objet(
"tentative",
1,
objet_visible_tentative_condition,
objet_tentative_descriptions
);
jeu_objets.add(objet_tentative);
// "Connaissances"
List<Conaissance> jeu_connaissances = new ArrayList<>();
List<Description> connaissance_Reussite_descriptions = new ArrayList<>();
List<ConditionEt> connaissance_Reussite_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> connaissance_Reussite_description_1_conditions_TEST_1 = new ArrayList<>();
connaissance_Reussite_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
connaissance_Reussite_description_1_conditions_ET.add(connaissance_Reussite_description_1_conditions_TEST_1)
Condition connaissance_Reussite_description_1_condition = new Condition(connaissance_Reussite_description_1_conditions_ET);
connaissance_Reussite_descriptions.add(
new Description(
"Permet de se casser de la",
connaissance_Reussite_description_1_condition
)
);
List<ConditionEt> connaissance_visible_Reussite_conditions_ET = new ArrayList<>();
List<ConditionTest> connaissance_visible_Reussite_conditions_TEST_1 = new ArrayList<>();
connaissance_visible_Reussite_conditions_TEST_1.add(
new ConditionBoolean(true)
);
connaissance_visible_Reussite_conditions_ET.add(connaissance_visible_Reussite_conditions_TEST_1)
Condition connaissance_visible_Reussite_condition = new Condition(connaissance_visible_Reussite_conditions_ET);
Connaissance connaissance_Reussite = new Connaissance(
"Reussite",
connaissance_visible_Reussite_condition,
connaissance_Reussite_descriptions
);
jeu_connaissances.add(connaissance_Reussite);
// "Transformations"
List<Transformation> jeu_transformations = new ArrayList<>();
// "Explorateur"
List<Objet> explorateur_inventaire = new ArrayList<>();
explorateur_inventaire.add(objet_tentative);
explorateur_inventaire.add(objet_tentative);
explorateur_inventaire.add(objet_tentative);
List<Connaissance> explorateur_connaissances = new ArrayList<>();
Jeu.explorateur = new Explorateur(
3,
explorateur_connaissances,
explorateur_inventaire
);
// "Personnes"
List<Personne> jeu_personnes = new ArrayList<>();
List<ConditionEt> personne_visible_Sphinx_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_visible_Sphinx_1_conditions_TEST_1 = new ArrayList<>();
personne_visible_Sphinx_1_conditions_TEST_1.add(
new ConditionConnaissance(
connaissance_Reussite,
false
)
);
personne_visible_Sphinx_1_conditions_ET.add(personne_visible_Sphinx_1_conditions_TEST_1)
personne_visible_Sphinx_1_conditions_TEST_2.add(
new ConditionObjet(
objet_tentative,
">",
0
)
);
personne_visible_Sphinx_1_conditions_ET.add(personne_visible_Sphinx_1_conditions_TEST_2)
Condition personne_visible_Sphinx_1_condition = new Condition(personne_visible_Sphinx_1_conditions_ET);
List<ConditionEt> personne_obligatoire_Sphinx_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_obligatoire_Sphinx_1_conditions_TEST_1 = new ArrayList<>();
personne_obligatoire_Sphinx_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_obligatoire_Sphinx_1_conditions_ET.add(personne_obligatoire_Sphinx_1_conditions_TEST_1)
Condition personne_obligatoire_Sphinx_1_condition = new Condition(personne_obligatoire_Sphinx_1_conditions_ET);
List<Action> personne_Sphinx_1_interactions = new ArrayList<>();
List<ConditionEt> personne_Sphinx_1_interaction_visible_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_visible_1_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_visible_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_visible_1_conditions_ET.add(personne_Sphinx_1_interaction_visible_1_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_visible_1_condition = new Condition(personne_Sphinx_1_interaction_visible_1_conditions_ET);
List<Action> personne_Sphinx_1_interaction_1_actions = new ArrayList<>();
List<ConditionEt> personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET.add(personne_Sphinx_1_interaction_1_action_visible_1_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_action_visible_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_visible_1_conditions_ET);
List<ConditionEt> personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET.add(personne_Sphinx_1_interaction_1_action_fin_1_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_action_fin_1_condition = new Condition(personne_Sphinx_1_interaction_1_action_fin_1_conditions_ET);
List<Description> personne_Sphinx_1_interaction_1_descriptions = new ArrayList<>();
List<ConditionEt> personne_Sphinx_1_interaction_1_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_description_1_conditions_ET.add(personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_description_1_condition = new Condition(personne_Sphinx_1_interaction_1_description_1_conditions_ET);
personne_Sphinx_1_interaction_1_descriptions.add(
new Description(
"la bonne reponse",
personne_Sphinx_1_interaction_1_description_1_condition
)
);
List<Connaissance> personne_Sphinx_1_interaction_1_action_1_connaissances = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_1_connaissances.add(connaissance_Reussite);
List<Objet> personne_Sphinx_1_interaction_1_action_1_objets_conso = new ArrayList<>();
List<Objet> personne_Sphinx_1_interaction_1_action_1_objets_recus = new ArrayList<>();
personne_Sphinx_1_interaction_1_actions.add(
new Action(
personne_Sphinx_1_interaction_1_action_visible_1_condition,
personne_Sphinx_1_interaction_1_action_fin_1_condition,
personne_Sphinx_1_interaction_1_action_1_connaissances,
personne_Sphinx_1_interaction_1_action_1_objets_conso,
personne_Sphinx_1_interaction_1_action_1_objets_recus,
personne_Sphinx_1_interaction_1_action_1_descriptions
)
);
List<ConditionEt> personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET.add(personne_Sphinx_1_interaction_1_action_visible_2_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_action_visible_2_condition = new Condition(personne_Sphinx_1_interaction_1_action_visible_2_conditions_ET);
List<ConditionEt> personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET.add(personne_Sphinx_1_interaction_1_action_fin_2_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_action_fin_2_condition = new Condition(personne_Sphinx_1_interaction_1_action_fin_2_conditions_ET);
List<Description> personne_Sphinx_1_interaction_1_descriptions = new ArrayList<>();
List<ConditionEt> personne_Sphinx_1_interaction_1_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1 = new ArrayList<>();
personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
personne_Sphinx_1_interaction_1_description_1_conditions_ET.add(personne_Sphinx_1_interaction_1_description_1_conditions_TEST_1)
Condition personne_Sphinx_1_interaction_1_description_1_condition = new Condition(personne_Sphinx_1_interaction_1_description_1_conditions_ET);
personne_Sphinx_1_interaction_1_descriptions.add(
new Description(
"la mauvaise reponse",
personne_Sphinx_1_interaction_1_description_1_condition
)
);
List<Connaissance> personne_Sphinx_1_interaction_1_action_2_connaissances = new ArrayList<>();
List<Objet> personne_Sphinx_1_interaction_1_action_2_objets_conso = new ArrayList<>();
personne_Sphinx_1_interaction_1_action_1_objets_conso.add(objet_tentative);
List<Objet> personne_Sphinx_1_interaction_1_action_2_objets_recus = new ArrayList<>();
personne_Sphinx_1_interaction_1_actions.add(
new Action(
personne_Sphinx_1_interaction_1_action_visible_2_condition,
personne_Sphinx_1_interaction_1_action_fin_2_condition,
personne_Sphinx_1_interaction_1_action_2_connaissances,
personne_Sphinx_1_interaction_1_action_2_objets_conso,
personne_Sphinx_1_interaction_1_action_2_objets_recus,
personne_Sphinx_1_interaction_1_action_2_descriptions
)
);
List<Connaissance> personne_Sphinx_1_interaction_1_connaissances = new ArrayList<>();
List<Objet> personne_Sphinx_1_interaction_1_objets_conso = new ArrayList<>();
List<Objet> personne_Sphinx_1_interaction_1_objets_recus = new ArrayList<>();
personne_Sphinx_1_actions.add(
new Action(
personne_Sphinx_1_interaction_visible_1_condition,
personne_Sphinx_1_interaction_1_connaissances,
personne_Sphinx_1_interaction_1_objets_conso,
personne_Sphinx_1_interaction_1_objets_recus,
personne_Sphinx_1_interaction_1_actions
)
);
Personne personne_Sphinx = new Personne(
"Sphinx",
personne_visible_Sphinx_1_condition,
personne_obligatoire_Sphinx_1_condition,
personne_Sphinx_1_interactions
);
jeu_personnes.add(personne_Sphinx);
// "Lieux"
List<Lieu> territoire_lieux = new ArrayList<>();
List<ConditionEt> lieu_deposable_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_deposable_1_conditions_TEST_1 = new ArrayList<>();
lieu_deposable_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_deposable_1_conditions_ET.add(lieu_deposable_1_conditions_TEST_1)
Condition lieu_deposable_1_condition = new Condition(lieu_deposable_1_conditions_ET);
List<ConditionEt> lieu_depart_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_depart_1_conditions_TEST_1 = new ArrayList<>();
lieu_depart_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_depart_1_conditions_ET.add(lieu_depart_1_conditions_TEST_1)
Condition lieu_depart_1_condition = new Condition(lieu_depart_1_conditions_ET);
List<ConditionEt> lieu_fin_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_fin_1_conditions_TEST_1 = new ArrayList<>();
lieu_fin_1_conditions_TEST_1.add(
new ConditionBoolean(false)
);
lieu_fin_1_conditions_ET.add(lieu_fin_1_conditions_TEST_1)
Condition lieu_fin_1_condition = new Condition(lieu_fin_1_conditions_ET);
List<Description> lieu_Enigme_1_descriptions = new ArrayList<>();
List<ConditionEt> lieu_Enigme_1_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_Enigme_1_description_1_conditions_TEST_1 = new ArrayList<>();
lieu_Enigme_1_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_Enigme_1_description_1_conditions_ET.add(lieu_Enigme_1_description_1_conditions_TEST_1)
Condition lieu_Enigme_1_description_1_condition = new Condition(lieu_Enigme_1_description_1_conditions_ET);
lieu_Enigme_1_descriptions.add(
new Description(
"lieu de depart",
lieu_Enigme_1_description_1_condition
)
);
List<Personne> lieu_Enigme_1_personnes = new ArrayList<>();
lieu_Enigme_1_personnes.add(objet_Sphinx);
List<Objet> lieu_Enigme_1_objets = new ArrayList<>();
List<Connaissance> lieu_Enigme_1_connaissances = new ArrayList<>();
// TODO: utiliser un search dans la liste plutot que de déclarer les objets
Lieu lieu_Enigme = new Lieu(
"Enigme",
lieu_deposable_1_condition,
lieu_depart_1_condition,
lieu_fin_1_condition,
lieu_Enigme_1_personnes,
lieu_Enigme_1_descriptions,
lieu_Enigme_1_objets,
lieu_Enigme_1_connaissances
);
territoire_lieux.add(lieu_Enigme);
List<ConditionEt> lieu_deposable_2_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_deposable_2_conditions_TEST_1 = new ArrayList<>();
lieu_deposable_2_conditions_TEST_1.add(
new ConditionBoolean(false)
);
lieu_deposable_2_conditions_ET.add(lieu_deposable_2_conditions_TEST_1)
Condition lieu_deposable_2_condition = new Condition(lieu_deposable_2_conditions_ET);
List<ConditionEt> lieu_depart_2_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_depart_2_conditions_TEST_1 = new ArrayList<>();
lieu_depart_2_conditions_TEST_1.add(
new ConditionBoolean(false)
);
lieu_depart_2_conditions_ET.add(lieu_depart_2_conditions_TEST_1)
Condition lieu_depart_2_condition = new Condition(lieu_depart_2_conditions_ET);
List<ConditionEt> lieu_fin_2_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_fin_2_conditions_TEST_1 = new ArrayList<>();
lieu_fin_2_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_fin_2_conditions_ET.add(lieu_fin_2_conditions_TEST_1)
Condition lieu_fin_2_condition = new Condition(lieu_fin_2_conditions_ET);
List<Description> lieu_Succes_2_descriptions = new ArrayList<>();
List<ConditionEt> lieu_Succes_2_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_Succes_2_description_1_conditions_TEST_1 = new ArrayList<>();
lieu_Succes_2_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_Succes_2_description_1_conditions_ET.add(lieu_Succes_2_description_1_conditions_TEST_1)
Condition lieu_Succes_2_description_1_condition = new Condition(lieu_Succes_2_description_1_conditions_ET);
lieu_Succes_2_descriptions.add(
new Description(
"lieu succes",
lieu_Succes_2_description_1_condition
)
);
List<Personne> lieu_Succes_2_personnes = new ArrayList<>();
List<Objet> lieu_Succes_2_objets = new ArrayList<>();
List<Connaissance> lieu_Succes_2_connaissances = new ArrayList<>();
// TODO: utiliser un search dans la liste plutot que de déclarer les objets
Lieu lieu_Succes = new Lieu(
"Succes",
lieu_deposable_2_condition,
lieu_depart_2_condition,
lieu_fin_2_condition,
lieu_Succes_2_personnes,
lieu_Succes_2_descriptions,
lieu_Succes_2_objets,
lieu_Succes_2_connaissances
);
territoire_lieux.add(lieu_Succes);
List<ConditionEt> lieu_deposable_3_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_deposable_3_conditions_TEST_1 = new ArrayList<>();
lieu_deposable_3_conditions_TEST_1.add(
new ConditionBoolean(false)
);
lieu_deposable_3_conditions_ET.add(lieu_deposable_3_conditions_TEST_1)
Condition lieu_deposable_3_condition = new Condition(lieu_deposable_3_conditions_ET);
List<ConditionEt> lieu_depart_3_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_depart_3_conditions_TEST_1 = new ArrayList<>();
lieu_depart_3_conditions_TEST_1.add(
new ConditionBoolean(false)
);
lieu_depart_3_conditions_ET.add(lieu_depart_3_conditions_TEST_1)
Condition lieu_depart_3_condition = new Condition(lieu_depart_3_conditions_ET);
List<ConditionEt> lieu_fin_3_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_fin_3_conditions_TEST_1 = new ArrayList<>();
lieu_fin_3_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_fin_3_conditions_ET.add(lieu_fin_3_conditions_TEST_1)
Condition lieu_fin_3_condition = new Condition(lieu_fin_3_conditions_ET);
List<Description> lieu_Echec_3_descriptions = new ArrayList<>();
List<ConditionEt> lieu_Echec_3_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> lieu_Echec_3_description_1_conditions_TEST_1 = new ArrayList<>();
lieu_Echec_3_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
lieu_Echec_3_description_1_conditions_ET.add(lieu_Echec_3_description_1_conditions_TEST_1)
Condition lieu_Echec_3_description_1_condition = new Condition(lieu_Echec_3_description_1_conditions_ET);
lieu_Echec_3_descriptions.add(
new Description(
"lieu echec",
lieu_Echec_3_description_1_condition
)
);
List<Personne> lieu_Echec_3_personnes = new ArrayList<>();
List<Objet> lieu_Echec_3_objets = new ArrayList<>();
List<Connaissance> lieu_Echec_3_connaissances = new ArrayList<>();
// TODO: utiliser un search dans la liste plutot que de déclarer les objets
Lieu lieu_Echec = new Lieu(
"Echec",
lieu_deposable_3_condition,
lieu_depart_3_condition,
lieu_fin_3_condition,
lieu_Echec_3_personnes,
lieu_Echec_3_descriptions,
lieu_Echec_3_objets,
lieu_Echec_3_connaissances
);
territoire_lieux.add(lieu_Echec);
// "Chemins"
List<Chemin> territoire_chemins = new ArrayList<>();
List<ConditionEt> chemin_ouvert_win_1_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_ouvert_win_1_conditions_TEST_1 = new ArrayList<>();
chemin_ouvert_win_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_ouvert_win_1_conditions_ET.add(chemin_ouvert_win_1_conditions_TEST_1)
Condition chemin_ouvert_win_1_condition = new Condition(chemin_ouvert_win_1_conditions_ET);
List<ConditionEt> chemin_visible_win_1_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_visible_win_1_conditions_TEST_1 = new ArrayList<>();
chemin_visible_win_1_conditions_TEST_1.add(
new ConditionConnaissance(
connaissance_Reussite,
false
)
);
chemin_visible_win_1_conditions_ET.add(chemin_visible_win_1_conditions_TEST_1)
Condition chemin_visible_win_1_condition = new Condition(chemin_visible_win_1_conditions_ET);
List<ConditionEt> chemin_obligatoire_win_1_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_obligatoire_win_1_conditions_TEST_1 = new ArrayList<>();
chemin_obligatoire_win_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_obligatoire_win_1_conditions_ET.add(chemin_obligatoire_win_1_conditions_TEST_1)
Condition chemin_obligatoire_win_1_condition = new Condition(chemin_obligatoire_win_1_conditions_ET);
List<Description> chemin_win_1_descriptions = new ArrayList<>();
List<ConditionEt> chemin_win_1_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_win_1_description_1_conditions_TEST_1 = new ArrayList<>();
chemin_win_1_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_win_1_description_1_conditions_ET.add(chemin_win_1_description_1_conditions_TEST_1)
Condition chemin_win_1_description_1_condition = new Condition(chemin_win_1_description_1_conditions_ET);
chemin_win_1_descriptions.add(
new Description(
"Le chemin de la victoire !",
chemin_win_1_description_1_condition
)
);
List<Connaissance> chemin_win_1_connaissances = new ArrayList<>();
List<Objet> chemin_win_1_objet_recus = new ArrayList<>();
List<Objet> chemin_win_1_objet_conso = new ArrayList<>();
Chemin chemins_win new Chemin(
"win",
lieu_Enigme,
lieu_Succes,
chemin_ouvert_win_1_condition,
chemin_visible_win_1_condition,
chemin_obligatoire_win_1_condition,
chemin_win_1_connaissances
chemin_win_1_objets_recus,
chemin_win_1_objets_conso,
chemin_win_1_descriptions,
);
territoire_chemins.add(chemins_win);
List<ConditionEt> chemin_ouvert_loose_2_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_ouvert_loose_2_conditions_TEST_1 = new ArrayList<>();
chemin_ouvert_loose_2_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_ouvert_loose_2_conditions_ET.add(chemin_ouvert_loose_2_conditions_TEST_1)
Condition chemin_ouvert_loose_2_condition = new Condition(chemin_ouvert_loose_2_conditions_ET);
List<ConditionEt> chemin_visible_loose_2_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_visible_loose_2_conditions_TEST_1 = new ArrayList<>();
chemin_visible_loose_2_conditions_TEST_1.add(
new ConditionObjet(
objet_tentatives,
"==",
0
)
);
chemin_visible_loose_2_conditions_ET.add(chemin_visible_loose_2_conditions_TEST_1)
Condition chemin_visible_loose_2_condition = new Condition(chemin_visible_loose_2_conditions_ET);
List<ConditionEt> chemin_obligatoire_loose_2_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_obligatoire_loose_2_conditions_TEST_1 = new ArrayList<>();
chemin_obligatoire_loose_2_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_obligatoire_loose_2_conditions_ET.add(chemin_obligatoire_loose_2_conditions_TEST_1)
Condition chemin_obligatoire_loose_2_condition = new Condition(chemin_obligatoire_loose_2_conditions_ET);
List<Description> chemin_loose_2_descriptions = new ArrayList<>();
List<ConditionEt> chemin_loose_2_description_1_conditions_ET = new ArrayList<>();
List<ConditionTest> chemin_loose_2_description_1_conditions_TEST_1 = new ArrayList<>();
chemin_loose_2_description_1_conditions_TEST_1.add(
new ConditionBoolean(true)
);
chemin_loose_2_description_1_conditions_ET.add(chemin_loose_2_description_1_conditions_TEST_1)
Condition chemin_loose_2_description_1_condition = new Condition(chemin_loose_2_description_1_conditions_ET);
chemin_loose_2_descriptions.add(
new Description(
"Le chemin de la loose !",
chemin_loose_2_description_1_condition
)
);
List<Connaissance> chemin_loose_2_connaissances = new ArrayList<>();
List<Objet> chemin_loose_2_objet_recus = new ArrayList<>();
List<Objet> chemin_loose_2_objet_conso = new ArrayList<>();
Chemin chemins_loose new Chemin(
"loose",
lieu_Enigme,
lieu_Echec,
chemin_ouvert_loose_2_condition,
chemin_visible_loose_2_condition,
chemin_obligatoire_loose_2_condition,
chemin_loose_2_connaissances
chemin_loose_2_objets_recus,
chemin_loose_2_objets_conso,
chemin_loose_2_descriptions,
);
territoire_chemins.add(chemins_loose);
}
}

View file

@ -0,0 +1,13 @@
import java.util.List;
public class Territoire {
List<Lieu> lieux;
List<Chemin> chemins;
public Territoire(
List<Lieu> lieux,
List<Chemin> chemins) {
this.lieux = lieux;
this.chemins = chemins;
}
}

View file

@ -0,0 +1,16 @@
import java.util.List;
public class Transformation {
Condition possible;
List<Objet> objetsSources;
List<Objet> objetsResultats;
public Transformation(
Condition possible,
List<Objet> objetsSources,
List<Objet> objetsResultats) {
this.possible = possible;
this.objetsSources = objetsSources;
this.objetsResultats = objetsResultats;
}
}

View file

@ -1 +0,0 @@
/fr/

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,15 @@
[comment encoding = UTF-8 /]
[module toPrototype('http://www.n7.fr/game/xtext/Game')]
[template public jeuToPrototype(jeu : Jeu)]
[comment @main/]
[file ('Prototype.java', false, 'UTF-8')]
import java.util.List;
import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Prototype {
public static void main(String['['/][']'/] args) {
@ -156,26 +161,26 @@ List<Chemin> territoire_chemins = new ArrayList<>();
[for (c : Nom | ch.connaissances)]
chemin_[ch.nom.nom/]_[i/]_connaissances.add(connaissance_[c.nom/]);
[/for]
List<Objet> chemin_[ch.nom.nom/]_[i/]_objet_recus = new ArrayList<>();
List<Objet> chemin_[ch.nom.nom/]_[i/]_objets_recus = new ArrayList<>();
[for (o : Nom | ch.objetsRecus)]
chemin_[ch.nom.nom/]_[i/]_objets_recus.add(objet_[o.nom/]);
[/for]
List<Objet> chemin_[ch.nom.nom/]_[i/]_objet_conso = new ArrayList<>();
List<Objet> chemin_[ch.nom.nom/]_[i/]_objets_conso = new ArrayList<>();
[for (o : Nom | ch.objetsConso)]
chemin_[ch.nom.nom/]_[i/]_objets_conso.add(objet_[o.nom/]);
[/for]
Chemin chemins_[ch.nom.nom/] new Chemin(
Chemin chemins_[ch.nom.nom/] = new Chemin(
"[ch.nom.nom/]",
lieu_[ch.lieuIn.nom/],
lieu_[ch.lieuOut.nom/],
chemin_ouvert_[ch.nom.nom/]_[i/]_condition,
chemin_visible_[ch.nom.nom/]_[i/]_condition,
chemin_obligatoire_[ch.nom.nom/]_[i/]_condition,
chemin_[ch.nom.nom/]_[i/]_connaissances
chemin_[ch.nom.nom/]_[i/]_connaissances,
chemin_[ch.nom.nom/]_[i/]_objets_recus,
chemin_[ch.nom.nom/]_[i/]_objets_conso,
chemin_[ch.nom.nom/]_[i/]_descriptions,
chemin_[ch.nom.nom/]_[i/]_descriptions
);
territoire_chemins.add(chemins_[ch.nom.nom/]);
@ -190,10 +195,8 @@ List<Chemin> territoire_chemins = new ArrayList<>();
List<ConditionEt> [name/]_conditions_ET = new ArrayList<>();
[for (cET : ConditionEt | c.condition)]
List<ConditionTest> [name/]_conditions_TEST_[i/] = new ArrayList<>();
[for (cTEST : ConditionTest | cET.conditionTest)]
[name/]_conditions_TEST_[i/].add(
[name/]_conditions_ET_[i/].add(
[if (cTEST.oclIsKindOf(ConditionBoolean))]
[let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)]
new ConditionBoolean([cBOOL.valeur/])
@ -215,7 +218,7 @@ List<ConditionEt> [name/]_conditions_ET = new ArrayList<>();
[/let]
[/if]
);
[name/]_conditions_ET.add([name/]_conditions_TEST_[i/])
[name/]_conditions_ET.add([name/]_conditions_TEST_[i/]);
[/for]
[/for]
@ -244,7 +247,7 @@ List<Action> [name/]_actions = new ArrayList<>();
[for (a : Action | as)]
[print_condition(a.visible, name + '_action_visible_' + i.toString())/]
[print_condition(a.finInteraction, name + '_action_fin_' + i.toString())/]
[print_descriptions(a.descriptions, name)/]
[print_descriptions(a.descriptions, name + '_' + i.toString())/]
List<Connaissance> [name/]_action_[i/]_connaissances = new ArrayList<>();
[for (c : Nom | a.connaissances)]

View file

@ -1,10 +1,15 @@
[comment encoding = UTF-8 /]
[module toPrototype('http://www.n7.fr/game/xtext/Game')]
[template public jeuToPrototype(jeu : Jeu)]
[comment @main/]
[file ('Prototype.java', false, 'UTF-8')]
import java.util.List;
import java.util.ArrayList;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Prototype {
public static void main(String['['/][']'/] args) {
@ -156,26 +161,26 @@ List<Chemin> territoire_chemins = new ArrayList<>();
[for (c : Nom | ch.connaissances)]
chemin_[ch.nom.nom/]_[i/]_connaissances.add(connaissance_[c.nom/]);
[/for]
List<Objet> chemin_[ch.nom.nom/]_[i/]_objet_recus = new ArrayList<>();
List<Objet> chemin_[ch.nom.nom/]_[i/]_objets_recus = new ArrayList<>();
[for (o : Nom | ch.objetsRecus)]
chemin_[ch.nom.nom/]_[i/]_objets_recus.add(objet_[o.nom/]);
[/for]
List<Objet> chemin_[ch.nom.nom/]_[i/]_objet_conso = new ArrayList<>();
List<Objet> chemin_[ch.nom.nom/]_[i/]_objets_conso = new ArrayList<>();
[for (o : Nom | ch.objetsConso)]
chemin_[ch.nom.nom/]_[i/]_objets_conso.add(objet_[o.nom/]);
[/for]
Chemin chemins_[ch.nom.nom/] new Chemin(
Chemin chemins_[ch.nom.nom/] = new Chemin(
"[ch.nom.nom/]",
lieu_[ch.lieuIn.nom/],
lieu_[ch.lieuOut.nom/],
chemin_ouvert_[ch.nom.nom/]_[i/]_condition,
chemin_visible_[ch.nom.nom/]_[i/]_condition,
chemin_obligatoire_[ch.nom.nom/]_[i/]_condition,
chemin_[ch.nom.nom/]_[i/]_connaissances
chemin_[ch.nom.nom/]_[i/]_connaissances,
chemin_[ch.nom.nom/]_[i/]_objets_recus,
chemin_[ch.nom.nom/]_[i/]_objets_conso,
chemin_[ch.nom.nom/]_[i/]_descriptions,
chemin_[ch.nom.nom/]_[i/]_descriptions
);
territoire_chemins.add(chemins_[ch.nom.nom/]);
@ -190,10 +195,8 @@ List<Chemin> territoire_chemins = new ArrayList<>();
List<ConditionEt> [name/]_conditions_ET = new ArrayList<>();
[for (cET : ConditionEt | c.condition)]
List<ConditionTest> [name/]_conditions_TEST_[i/] = new ArrayList<>();
[for (cTEST : ConditionTest | cET.conditionTest)]
[name/]_conditions_TEST_[i/].add(
[name/]_conditions_ET_[i/].add(
[if (cTEST.oclIsKindOf(ConditionBoolean))]
[let cBOOL : ConditionBoolean = cTEST.oclAsType(ConditionBoolean)]
new ConditionBoolean([cBOOL.valeur/])
@ -215,7 +218,7 @@ List<ConditionEt> [name/]_conditions_ET = new ArrayList<>();
[/let]
[/if]
);
[name/]_conditions_ET.add([name/]_conditions_TEST_[i/])
[name/]_conditions_ET.add([name/]_conditions_TEST_[i/]);
[/for]
[/for]
@ -244,7 +247,7 @@ List<Action> [name/]_actions = new ArrayList<>();
[for (a : Action | as)]
[print_condition(a.visible, name + '_action_visible_' + i.toString())/]
[print_condition(a.finInteraction, name + '_action_fin_' + i.toString())/]
[print_descriptions(a.descriptions, name)/]
[print_descriptions(a.descriptions, name + '_' + i.toString())/]
List<Connaissance> [name/]_action_[i/]_connaissances = new ArrayList<>();
[for (c : Nom | a.connaissances)]

View file

@ -1 +0,0 @@
/fr/

File diff suppressed because it is too large Load diff