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();