From 66607aa1ad4b7cad38b23a0c792e9c07e6ace72b Mon Sep 17 00:00:00 2001 From: pisouvigne Date: Fri, 31 Jul 2020 11:41:25 +0200 Subject: [PATCH] gen --- site/vue/index.html | 7 +- site/vue/js/createElement.js | 38 +++++-- site/vue/js/db.js | 1 - site/vue/js/func.js | 14 --- site/vue/js/generateGame.js | 185 ++++++++++++++++++++++++++++------- site/vue/js/init.js | 10 +- site/vue/js/main.js | 6 +- 7 files changed, 192 insertions(+), 69 deletions(-) diff --git a/site/vue/index.html b/site/vue/index.html index 3204225..f871dd3 100644 --- a/site/vue/index.html +++ b/site/vue/index.html @@ -620,11 +620,8 @@ diff --git a/site/vue/js/createElement.js b/site/vue/js/createElement.js index 4a4b24f..b95a46d 100644 --- a/site/vue/js/createElement.js +++ b/site/vue/js/createElement.js @@ -195,7 +195,7 @@ function createLine(points, id, end) { } -function createLink(entre, sortie) { +function createLink(entre, sortie, infoId) { //entre est une porte logique lineId = lineCount.length; lineCount.push(1); @@ -233,8 +233,34 @@ function createLink(entre, sortie) { case "logique": switch (whatIsElement(sortie)) { case "logique": - switch (giveLineId(sortie.name, entre)) { - case "id1": + if (infoId === undefined || infoId === null) { + console.log('bug') + } + else if (infoId === 0) { + switch (giveLineId(sortie.name, entre)) { + case "id1": + let switchMidX = entre.x + imageWidth; + let switchMidY = entre.y + imageHeight / 2; + + let logiqueMidX = sortie.x; + if (sortie.type === "inv") { + var logiqueMidY = sortie.y + (imageHeight / 2); + } else { + var logiqueMidY = sortie.y + (imageHeight / 3); + } + createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line" + lineId); + setLine(sortie, "id1", "line" + lineId); + setLine(entre, "id3", "line" + lineId); + break; + case "id2": + createLine([entre.x + imageWidth, entre.y + imageHeight / 2, sortie.x, sortie.y + (imageHeight / 3) * 2], "line" + lineId); + setLine(sortie, "id2", "line" + lineId); + setLine(entre, "id3", "line" + lineId); + break; + } + + } else { + if (infoId === "id1") { let switchMidX = entre.x + imageWidth; let switchMidY = entre.y + imageHeight / 2; @@ -247,12 +273,11 @@ function createLink(entre, sortie) { createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line" + lineId); setLine(sortie, "id1", "line" + lineId); setLine(entre, "id3", "line" + lineId); - break; - case "id2": + } else { createLine([entre.x + imageWidth, entre.y + imageHeight / 2, sortie.x, sortie.y + (imageHeight / 3) * 2], "line" + lineId); setLine(sortie, "id2", "line" + lineId); setLine(entre, "id3", "line" + lineId); - break; + } } break; default: @@ -389,6 +414,7 @@ function createLinkSwitch() { } switchsInfo.splice(switchsInfo.indexOf(switchs), 1); + createLink(stage.findOne("#" + switchs.id), findLogique(logique.name)); } diff --git a/site/vue/js/db.js b/site/vue/js/db.js index e8072c2..db03e21 100644 --- a/site/vue/js/db.js +++ b/site/vue/js/db.js @@ -1,5 +1,4 @@ function getTest() { - console.log("oui"); var xhttp; xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { diff --git a/site/vue/js/func.js b/site/vue/js/func.js index 741931d..eb6345e 100644 --- a/site/vue/js/func.js +++ b/site/vue/js/func.js @@ -658,20 +658,6 @@ function nextLevel(mode) { } } -function calculNombreSwitch() { - var entrelibre = 0; - logiques.forEach(function (element) { - - if (element.id1 == null) { - entrelibre++; - } - if (element.id2 == null && element.type != "inv") { - entrelibre++; - } - }); - numberOfSwitch = entrelibre; -} - function resize() { diff --git a/site/vue/js/generateGame.js b/site/vue/js/generateGame.js index 204f04a..f047ba1 100644 --- a/site/vue/js/generateGame.js +++ b/site/vue/js/generateGame.js @@ -194,8 +194,19 @@ function calcul(launch) { if (warning) WarningMessage(warning) else WarningMessage(""); + var listePorteLogique = [ + [document.querySelector("#logique1").checked, "et"], + [document.querySelector("#logique2").checked, "ou"], + [document.querySelector("#logique3").checked, "inv"], + [document.querySelector("#logique4").checked, "etnon"], + [document.querySelector("#logique5").checked, "nonou"] + ]; if (launch !== undefined && launch !== null && launch === true && error === null) { - generate2(col, matchs, fork); + for (let i = 0; i < 200; i++) { + tentative = i; + if (generator(fork, col, listePorteLogique) === false) + break; + } } } @@ -441,7 +452,19 @@ function createGameOne(niveau) { } -function generator(matchs, listePorteLogique, col) { +function generator(matchs, col, listePorteLogique) { + console.log(col) + var regen = false; + + isTutoriel = false; + isTuto = false; + hideDiv(document.querySelector('#TestNouveauGenerateur')); + showDiv(document.querySelector('#playPage')); + resetAllTabs(false); + createStage("play_container"); + stage.add(layer); + timeEnd = 999; + var groupes = []; var colCopy = []; var links = []; @@ -485,32 +508,35 @@ function generator(matchs, listePorteLogique, col) { if (logique.col === i) logiqueCol.push(logique); }); //Création des liens - matchs.forEach(function (element) { - if (element[0] === i) { - //Selection de la sortie au hasard dans la colonne i - var index = getRandomArbitrary(0, logiqueCol.length); - var logiqueUse = logiqueCol[index]; - logiqueCol.splice(index, 1); - //Selection du groupes - groupes.forEach(function (group, index) { - if (group.length === element[1]) { - group.forEach(function (logique) { - var signal = null; - - logiquesTemp.forEach(function (log) { - if (log.id === logique[0]) { - if (logique[1] === "id1") - signal = log.id1; - else signal = log.id2; - } + if (logiqueCol.length !== 0) { + matchs.forEach(function (element) { + if (element[0] === i) { + //Selection de la sortie au hasard dans la colonne i + var index = getRandomArbitrary(0, logiqueCol.length); + var logiqueUse = logiqueCol[index]; + logiqueCol.splice(index, 1); + //Selection du groupes + groupes.forEach(function (group, index) { + if (group.length === element[1]) { + group.forEach(function (logique) { + var signal = null; + + logiquesTemp.forEach(function (log) { + if (log.id === logique[0]) { + if (logique[1] === "id1") + signal = log.id1; + else signal = log.id2; + } + }); + links.push([logiqueUse.id, logique[0], logique[1], signal]); }); - links.push([logiqueUse.id, logique[0], logique[1], signal]); - }); - groupes.splice(index, 1); - } - }); - } - }); + groupes.splice(index, 1); + } + }); + } + }); + } + //Attribution des links aux orphelins : var free = [], usedLogique = []; logiquesTemp.forEach(function (logique) { @@ -767,8 +793,10 @@ function generator(matchs, listePorteLogique, col) { usedLogique.forEach(function (uLogique) { if (uLogique[0] === logique.id) isOk = false; }); - if (isOk) + if (isOk) { isLogiqueFree.push("id1"); + } + } else { var isId1 = true; var isId2 = true; @@ -786,8 +814,12 @@ function generator(matchs, listePorteLogique, col) { } }); - if (isId1) isLogiqueFree.push("id1"); - if (isId2) isLogiqueFree.push("id2"); + if (isId1) { + isLogiqueFree.push("id1"); + } + if (isId2) { + isLogiqueFree.push("id2"); + } } } isLogiqueFree.forEach(function (id) { @@ -842,6 +874,7 @@ function generator(matchs, listePorteLogique, col) { }); if (isAllowed) { newGroupe.push([fr[0], fr[1]]); + usedLogique.push([fr[0], fr[1]]); count++; } } @@ -859,6 +892,7 @@ function generator(matchs, listePorteLogique, col) { }); if (isAllowed) { newGroupe.push([fr[0], fr[1]]); + usedLogique.push([fr[0], fr[1]]); count++; } } @@ -867,15 +901,98 @@ function generator(matchs, listePorteLogique, col) { } //Problème retour en arrière : else { - console.log("gros problème") + regen = true; + /*console.log("gros problème"); + console.log("0 : " + number0); + console.log("1 : " + number1); + console.log("colonne : " + i); + console.log("Demandé : " + element[1] + " colonne : " + element[0]); + logiquesTemp.forEach(function (logique) { + if (logique.col = col.length) { + + } + if (logique.col === i) + console.log(logique); + });*/ + /* + //On prend le plus grand : + //1 + if (number1 >= number0) { + //check si il y a des logiques complétements vide + var free0 = []; + var isFullEmpty = []; + free.forEach(function (fr) { + if (fr[2] === 0) + free0.push(fr); + }); + free.forEach(function (fr) { + free0.forEach(function (fr0) { + if (fr[0] === fr0[0] && fr[2] !== 0) + isFullEmpty.push(fr[0]) + }) + }); + //Changement de type du complétement vide + isFullEmpty.forEach(function (logiqueId) { + logiquesTemp.forEach(function (logique) { + if (logique.id === logiqueId) { + if (logique.id3 === 1) { + switch (logique.type) { + case "et": + type.id1 = 1; + type.id2 = 1; + break; + case "ou": + type.id1 = 1; + type.id2 = 1; + break; + } + } + } + console.log(logique.id + " : " + logique.type) + }); + }); + } + //0 + else { + + }*/ + } groupes.push(newGroupe); } }); } - console.log(col); - console.log(logiquesTemp); - console.log(links); + if (!regen) { + //Génération de la vue + initTimer(); + colonneTot = col.length; + tempMatchs = []; + tempFork = []; + for (let i = 0; i < matchs.length; i++) + tempMatchs[i] = matchs[i]; + for (let i = 0; i < matchs.length; i++) + tempFork[i] = matchs[i - 1]; + tempCol = col; + + colonneTot = col.length; + for (let i = 0; i < colonneTot; i++) { + var pos = 0; + logiquesTemp.forEach(function (logique) { + if (logique.col - 1 === i) { + createLogique(stage.width() / (colonneTot + 1) * (i + 1), (stage.height() / col[i] / 2 - imageHeight) + (stage.height() / 1.5 / col[i] * pos), logique.id, logique.type) + pos++; + } + }); + } + links.forEach(function (link) { + if (link[1] !== "end") + createLink(findLogique(link[0]), findLogique(link[1]), link[2]); + }); + initEndGame(); + //createLink(findLogique("logique5"), findLogique("logique1")) + } + return regen; + } diff --git a/site/vue/js/init.js b/site/vue/js/init.js index 18d0415..a86f82b 100644 --- a/site/vue/js/init.js +++ b/site/vue/js/init.js @@ -16,11 +16,11 @@ function initAllSwitch(mode) { document.body.style.cursor = "default"; }); //faire le random de l'inversion de switch - if (getRandomArbitrary(0, 3) == 1) { - activeSwitch(switche.id()); - //if (checkIfEnd()) - //activeSwitch(switche.id()); - } + //if (getRandomArbitrary(0, 3) == 1) { + //activeSwitch(switche.id()); + //if (checkIfEnd()) + //activeSwitch(switche.id()); + //} }); } diff --git a/site/vue/js/main.js b/site/vue/js/main.js index 76f1177..c708181 100644 --- a/site/vue/js/main.js +++ b/site/vue/js/main.js @@ -114,12 +114,10 @@ function initEndGame(mode) { switchCreator(numberOfSwitch); createAllLinkSwitch(); - initAllSwitch(mode); - - logiques.forEach(function (element) { + /*logiques.forEach(function (element) { checkEntreCroisement(element.name); - }); + });*/ createEnd(); initEnd();