|
|
|
@ -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;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|