Sélectionner une page
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));
});