const noms_joueurs = [‘A’, ‘B’, ‘C’];
class tirage_joueur {
constructor() {
this.source = ’10’;
}
}
function PEDB() {
var tirage_total_A = [];
var tirage_total_B = [];
var tirage_total_C = [];
var table_tirages_totaux = [tirage_total_A, tirage_total_B, tirage_total_C];
let pedb_out = document.getElementById(‘sortie_pedb’);
pedb_out.innerHTML = ”;
var resultats = document.getElementById(‘resultats’);
// renvoie un nombre aléatoire entre 1 inclus et max inclus
function lancer (max) {
let premier_lancer = Math.random();
let resultat_lancer = premier_lancer * (max);
// console.log(resultat_lancer);
resultat_lancer = Math.floor(resultat_lancer);
return resultat_lancer + 1;
}
// renvoie un 1 ou un 2
function pile_ou_face () {
let lancer_piece = Math.random() * 2;
lancer_piece = Math.floor(lancer_piece);
return lancer_piece + 1;
}
// détermine si les sources seront individuelles ou pas
// si 1, tout le monde a la même. si 2, chaque personne a une source différente
sources_pour_tous = pile_ou_face();
function tirage_accident() {
return lancer(20);
}
var table_accidents = [];
// tire 3 fois 20 pour les accidents
for(i = 0; i<3; i++) {
tirage = [];
tirage[i%1] = tirage_accident(); // si 1, l’accident a lieu
tirage[i%1+1] = lancer(3); // définit le joueur auquel il s’appliquerait
table_accidents[i] = tirage;
}
console.log(table_accidents);
// retourne une source; matériel ou immatériel
function sources() {
let sources_possibles = [‘matériel’, ‘immatériel’];
let pick = lancer(2);
return sources_possibles[pick-1];
}
table_sources = [];
// si tout le monde a la même source
if (sources_pour_tous == 1) {
let source = sources();
let indice_source;
if (source == ‘matériel’) {
indice_source = 1;
}
else {
indice_source = 2;
}
for(i=0; i<3; i++) {
table_sources[i] = source;
table_tirages_totaux[i].push(indice_source);
}
}
// si chaque personne a une source personnelle
else {
for(i=0; i<3; i++) {
let source_tiree = sources();
table_sources[i] = source_tiree;
if (source_tiree == ‘matériel’) {
table_tirages_totaux[i].push(1)
}
else {
table_tirages_totaux[i].push(2);
}
}
}
// renvoie une appartenance ‘propre’ ou ‘libre’
function appartenance() {
if (lancer(2) == 1) {
return [‘propre’, 1];
}
return [‘libre’, 2];
}
// renvoie une appartenance ‘passé’ ou ‘futur’
function temps() {
if (lancer(2) == 1) {
return [‘futur’, 2];
}
return [‘passé’, 1];
}
table_appartenance = [];
// définit les ‘appartenances’ en fonction du matériel ou immatériel
for(i=0; i<3; i++) {
if (table_sources[i] == ‘matériel’) {
let appartenance_tiree = appartenance();
table_appartenance[i] = appartenance_tiree[0];
table_tirages_totaux[i].push(appartenance_tiree[1]);
}
else {
let temps_tire = temps();
table_appartenance[i] = temps_tire[0];
table_tirages_totaux[i].push(temps_tire[1]);
}
}
// définit si on tirera 1 ou 2 propriétés par personne
let nombre_proprietes = pile_ou_face();
let repertoire_proprietes = [‘couleur’, ‘qualité’, ‘sensation’, ‘sentiment’];
let repertoire_qualite = [
‘lisse’,
‘rugueux’,
‘mou’,
‘dur’,
‘souple’,
‘rigide’,
‘courbe’,
‘droit’,
‘léger’,
‘lourd’,
‘doux’,
‘rêche’
];
let repertoire_couleur = [
‘blanc’,
‘noir’,
‘gris’,
‘bleu’,
‘rouge (y compris rose)’,
‘jaune’,
‘vert’,
‘marron’,
‘orange’,
‘violet’
];
let repertoire_qualite_nom = [
‘à la lisseur’,
‘à la rugosité’,
‘à la mollesse’,
‘a la dureté’,
‘à la souplesse’,
‘à la rigidité’,
‘à une courbure ‘,
‘à la droiture’,
‘à la légèreté’,
‘à la lourdeur’,
‘à la douceur’,
“à l’âpreté”
];
let repertoire_couleur_nom = [
‘à la couleur blanche’,
‘à la couleur noire’,
‘à la couleur grise’,
‘à la couleur bleue’,
‘à la couleur rouge (y compris rose)’,
‘à la couleur jaune’,
‘à la couleur verte’,
‘à la couleur marron’,
‘à la couleur orange’,
‘à la couleur violette’
];
let repertoire_sensation = [
“à la lumière”,
“à l’obscurité”,
“au mouvement”,
“à l’immobilité”,
“au confort”,
“à l’inconfort”,
“à la santé”,
“à la maladie”,
“à la chaleur”,
“au froid”,
“à la sécheresse”,
“à l’humidité”,
“au bruit”,
“au silence”,
“à une bonne odeur”,
“à une mauvaise odeur”,
“à l’attraction”,
“à la repulsion”,
“à un bon goût”,
“à un mauvais goût”
];
let repertoire_sentiment = [
“à l’amour”,
“à la peur”,
“à la fierté”,
“à la honte”,
“à la surprise”,
“à l’ennui”,
“à la joie”,
“à la tristesse”,
“à la foi”,
“au désespoir”,
“à la connaissance”,
“à l’ignorance”
];
let modules = [repertoire_couleur, repertoire_qualite, repertoire_sensation, repertoire_sentiment];
let modules_nom = [repertoire_couleur_nom, repertoire_qualite_nom, repertoire_sensation, repertoire_sentiment];
let repertoires_tires = []; // on enregistre ici les numéros des rëpertoires qui ont été tirés
// renvoie une element aléatoire dans un repertoire donné
function module_aleatoire (liste_modules, quels_modules, lequel) {
let nombre_elements = liste_modules.length;
let index = lancer(nombre_elements) – 1;
let stockage = [];
// enregistre si on tire dans le repertoire des noms ou pas
stockage.push(quels_modules);
stockage.push(lequel);
repertoires_tires.push(stockage);
return liste_modules[index];
}
// la table_proprietes contient 3 sous-tables correspondant à chaque joueur
// elle a la forme [[qualité 1 joueur 1, qualité 2 joueur 1], [qualité 1 joueur 2, qualité 2 joueur 2], [qualité 1 joueur 3, qualité 2 joueur 3]]
// on peut donc accéder aux qualités de chaque joueur avec table_proprietes[joueur][index-qualité]
let table_proprietes = [[],[],[]];
// remplit la table des propriétés
for(i=0; i<3; i++) { // pour chaque joueur…
for(j=0; j < nombre_proprietes; j++) { // ajoute j qualités
let quels_modules;
let lancer_module = lancer(4)-1;
if (table_sources[i] == ‘immatériel’) {
var module_choisi = modules_nom[lancer_module];
quels_modules = 0;
}
else {
var module_choisi = modules[lancer_module];
quels_modules = 1;
}
table_proprietes[i][j] = module_aleatoire(module_choisi, quels_modules, lancer_module);
table_tirages_totaux[i].push(lancer_module+1);
}
}
console.log(table_proprietes);
console.log(String(table_accidents));
if (table_accidents[0][0] == 1) {
console.log(‘accident 1 — cohérence’);
let override = table_proprietes[table_accidents[0][1]-1][0];
let override_tirages = table_tirages_totaux[table_accidents[0][1]-1][2];
console.log(table_proprietes[table_accidents[0][1]-1]);
table_proprietes[0][0] = override;
table_proprietes[1][0] = override;
table_proprietes[2][0] = override;
table_tirages_totaux.forEach(e => {
e[2] = override_tirages;
});
}
// console.log(‘les proprietes sont: ‘ + String(table_proprietes));
//// oeuvre commune
let processus = pile_ou_face();
if (processus == 1) {
processus = ‘assemblage’;
}
else {
processus = ‘dessemblage’;
}
let temps_oc = 21 + lancer(49);
console.log(processus);
console.log(temps_oc + ‘ minutes’);
//// restitution personnelle
let restitutions = [‘une œuvre graphique (dessin, peinture…)’, ‘une photographie’, ‘une vidéo’, ‘une œuvre sonore’, ‘un volume (sculpture, objet…)’, ‘un récit’];
let table_restitutions = [];
for (i=0; i<3; i++) {
index = lancer(6) – 1;
table_restitutions[i] = restitutions[index];
}
let temps_restitution = lancer(3);
console.log(table_restitutions);
console.log(temps_restitution + ‘ heures’);
// resultats.innerHTML = tirage_accident();
console.log(table_sources);
console.log(table_appartenance);
let out_personne_A = ‘La personne A apporte ‘;
let out_personne_B = ‘La personne B apporte ‘;
let out_personne_C = ‘La personne C apporte ‘;
if (table_accidents[2][0] == 1 && table_accidents[2][1] == 1) {
out_personne_A = ‘L’accident “Le jour des contraires !” s’est produit : la personne A apporte le contraire d’’;
}
if (table_accidents[2][0] == 1 && table_accidents[2][1] == 2) {
out_personne_B = ‘L’accident “Le jour des contraires !” s’est produit : la personne B apporte le contraire d’’;
}
if (table_accidents[2][0] == 1 && table_accidents[2][1] == 3) {
out_personne_C = ‘L’accident “Le jour des contraires !” s’est produit : la personne C apporte le contraire d’’;
}
out_personne_A += phrase_qualites(table_tirages_totaux[0], table_proprietes[0], table_accidents);
out_personne_B += phrase_qualites(table_tirages_totaux[1], table_proprietes[1], table_accidents);
out_personne_C += phrase_qualites(table_tirages_totaux[2], table_proprietes[2], table_accidents);
let output_personnes = [out_personne_A, out_personne_B, out_personne_C];
console.log(output_personnes);
console.log(table_accidents);
if (table_accidents[1][0] == 1) {
console.log(’embarras !’);
var phrase_choix = ‘L’accident “L’embarras du choix” s’est produit : la personne ‘;
phrase_choix += noms_joueurs[table_accidents[1][1]-1];
phrase_choix += ‘ choisit ce qu’il apporte.’
output_personnes[table_accidents[1][1]-1] = phrase_choix;
}
let output_accidents = [];
let noms_accidents = [“cohérence”, “l’embarras du choix”, “le jour des contraires”];
if (table_accidents[0][0] == 1) {
output_accidents.push(“[L’accident cohérence s’est produit ! (5% de chances d’arriver)]”);
}
// for (let i = 0; i < 3; i += 1) {
// if (table_accidents[i][0] == 1) {
// output_accidents[i] = “L’accident ” + noms_accidents[i] + ” s’est produit ! (5% de chances d’arriver)”;
// }
// else {
// output_accidents [i] = ”;
// }
// }
// sortie pour le processus assemblage ou dessemblage
let output_processus = “À partir de ces trois éléments, l’équipe dispose de ” + temps_oc + ” minutes pour réaliser un ” + processus + “.”;
if (processus == ‘dessemblage’){
output_processus += ” J’ignore ce qu’est un dessemblage, hormis qu’il est le contraire d’un assemblage, mais l’un des buts du PEDB est de le découvrir.”;
}
else {
output_processus += ” Je ne sais pas comment on assemble des objets avec des idées, mais l’un des buts du PEDB est de le découvrir.”
}
// sortie pour la restitution personnelle
let heures = [‘1 heure’, ‘2 heures’, ‘3 heures’]
let output_restitution = “Chaque personne dispose de ” + heures[temps_restitution-1] + ” pour faire une restitution personnelle de l’œuvre commune.”;
let output_restitution_perso = [];
for (let i = 0; i <3; i += 1) {
output_restitution_perso[i] = “La personne ” + noms_joueurs[i] + ” réalise ” + table_restitutions[i];
}
pedb_out.innerHTML = “<h1>Œuvre commune</h1><h2>Les matériaux de départ :</h2>”;
pedb_out.innerHTML += ‘<p>’;
for(let i = 0; i < 3; i += 1) {
pedb_out.innerHTML += ‘<br>’+output_personnes[i];
}
pedb_out.innerHTML+= ‘</p>’
for(let i = 0; i < output_accidents.length; i += 1) {
pedb_out.innerHTML += ‘<p>’+output_accidents[i]+'</p>’;
}
pedb_out.innerHTML += ‘<p>’+output_processus+'</p>’;
pedb_out.innerHTML += “<h1>Restitutions personnelles</h1>”;
pedb_out.innerHTML += ‘<p>’+output_restitution+'</p>’;
for(let i = 0; i < 3; i += 1) {
pedb_out.innerHTML += ‘<p>’+output_restitution_perso[i]+'</p>’;
}
// console.log(output_personnes);
console.log(repertoires_tires.toString());
// console.log(output_processus);
// console.log(output_restitution);
// console.log(output_restitution_perso);
console.log(table_tirages_totaux);
// console.log(phrase_qualites(table_tirages_totaux[0], table_proprietes[0]));
// console.log(phrase_qualites(table_tirages_totaux[1], table_proprietes[1]));
// console.log(phrase_qualites(table_tirages_totaux[2], table_proprietes[2]));
console.log(table_proprietes);
}
// renvoie vrai si ‘texte’ commence par ‘à’ ou par ‘au’
function test_article (texte) {
if (texte[0] == ‘à’ || texte.substring(0,2) == ‘au’) {
return true;
}
return false;
}
function phrase_qualites(tirage, qualites, accidents, repertoires_tires) {
longueur = tirage.length;
let tirage_table = tirage;
let rallonge = false;
if (longueur == 4) {
rallonge = true;
}
if (test_article(qualites[0])) {
qualites.reverse();
}
let phrase_appartenance = ”;
if (tirage[1] == 1) {
phrase_appartenance = ‘qui lui appartient’;
}
else if (tirage[1] == 2) {
phrase_appartenance = ‘sans propriétaire’;
}
tirage = tirage.toString();
phrase = ”;
if (phrase_1.includes(tirage)) {
// console.log(‘type 1’);
phrase = ‘un objet ‘ + qualites[0];
if (rallonge) {
phrase += ‘ et ‘ + qualites[1];
}
phrase += ‘ ‘ + phrase_appartenance;
}
else if (phrase_2.includes(tirage)) {
// console.log(‘type 2’);
phrase = ‘un objet ‘ + phrase_appartenance + ‘ associé ‘ + qualites[0];
if (rallonge) {
phrase += ‘ et ‘ + qualites[1];
}
}
else if (phrase_3.includes(tirage)) {
// console.log(‘type 3’);
phrase = ‘un objet ‘ + qualites[0] + ‘ ‘ + phrase_appartenance;
if (rallonge) {
phrase += ‘ associé ‘ + qualites[1];
}
}
else {
// console.log(‘type 4’);
phrase = ‘un souvenir associé ‘ + qualites[0];
if (tirage_table[2] == 1) {
phrase = ‘un espoir ou une appréhension associé(e) ‘ + qualites[0];
}
if (rallonge) {
phrase += ‘ et ‘ + qualites[1];
}
}
phrase += ‘.’
return phrase;
};
var phrase_1 = [
“1,1,1,1”,
“1,1,1,2”,
“1,1,2,1”,
“1,1,2,2”,
“1,2,1,1”,
“1,2,1,2”,
“1,2,2,1”,
“1,2,2,2”
];
var phrase_2 = [
“1,1,3,3”,
“1,1,3,4”,
“1,1,4,3”,
“1,1,4,4”,
“1,2,4,3”,
“1,2,4,4”,
“1,2,3,3”,
“1,2,3,4”
];
var phrase_3 = [
“1,1,1,3”,
“1,1,1,4”,
“1,1,2,3”,
“1,1,2,4”,
“1,1,3,1”,
“1,1,3,2”,
“1,1,4,1”,
“1,1,4,2”,
“1,2,1,3”,
“1,2,1,4”,
“1,2,2,3”,
“1,2,2,4”,
“1,2,3,1”,
“1,2,3,2”,
“1,2,4,1”,
“1,2,4,2”
];
phrase_1.forEach(e => {
phrase_1.push(e.substring(0,5));
});
phrase_2.forEach(e => {
phrase_2.push(e.substring(0,5));
});
phrase_3.forEach(e => {
phrase_3.push(e.substring(0,5));
});