|
|
|
@ -148,9 +148,10 @@ function calcul(launch) {
|
|
|
|
|
var count = [];
|
|
|
|
|
for (let i = 0; i < col.length; i++) count[i] = 0;
|
|
|
|
|
var error = null;
|
|
|
|
|
var warning = null;
|
|
|
|
|
|
|
|
|
|
document.querySelectorAll(".div_gen_col_fork").forEach(function (element) {
|
|
|
|
|
element.childNodes[0].innerHTML = "Ajouter un fork pour la colonne " + element.childNodes[1].value + " qui se divise en " + element.childNodes[2].value;
|
|
|
|
|
element.childNodes[0].innerHTML = "Ajouter un fork pour la colonne " + element.childNodes[1].value + " qui se divise en " + element.childNodes[2].value + " ";
|
|
|
|
|
count[(parseInt(element.childNodes[1].value) - 1)] = count[(parseInt(element.childNodes[1].value) - 1)] + parseInt(element.childNodes[2].value);
|
|
|
|
|
matchs.push([(parseInt(element.childNodes[1].value) + 1), parseInt(element.childNodes[2].value)]);
|
|
|
|
|
fork.push([parseInt(element.childNodes[1].value), parseInt(element.childNodes[2].value)]);
|
|
|
|
@ -160,15 +161,40 @@ function calcul(launch) {
|
|
|
|
|
} else {
|
|
|
|
|
element.childNodes[1].style.borderColor = "white";
|
|
|
|
|
}
|
|
|
|
|
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[count[(parseInt(element.childNodes[1].value) - 1)]]) {
|
|
|
|
|
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value)] * 2 || count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value) - 1]) {
|
|
|
|
|
error = "Problème nombre de porte dans la colonne";
|
|
|
|
|
element.childNodes[2].style.borderColor = "red";
|
|
|
|
|
} else {
|
|
|
|
|
element.childNodes[2].style.borderColor = "white";
|
|
|
|
|
}
|
|
|
|
|
//calcul des erreur de sorties/entrees potentiels :
|
|
|
|
|
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value)])
|
|
|
|
|
warning = "Problèmes possible lors de la génération ";
|
|
|
|
|
if (element.childNodes[1].value === "" || element.childNodes[1].value === null || element.childNodes[1].value === undefined || element.childNodes[2].value === "" || element.childNodes[2].value === null || element.childNodes[2].value === undefined)
|
|
|
|
|
error = "Element(s) vide";
|
|
|
|
|
});
|
|
|
|
|
if (error !== null) ErrorMessage(error);
|
|
|
|
|
if (launch !== undefined && launch !== null && launch === true) {
|
|
|
|
|
if (error !== null) {
|
|
|
|
|
ErrorMessage(error);
|
|
|
|
|
stopspin(document.querySelector("#generate_button_perso"));
|
|
|
|
|
document.querySelector("#generate_button_perso").addEventListener('mouseenter', e => {
|
|
|
|
|
document.querySelector("#generate_button_perso").style.cursor = 'not-allowed';
|
|
|
|
|
});
|
|
|
|
|
document.querySelector("#generate_button_perso").addEventListener('mouseleave', e => {
|
|
|
|
|
document.querySelector("#generate_button_perso").style.cursor = 'default';
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
ErrorMessage("");
|
|
|
|
|
document.querySelector("#generate_button_perso").addEventListener('mouseenter', e => {
|
|
|
|
|
document.querySelector("#generate_button_perso").style.cursor = 'pointer';
|
|
|
|
|
});
|
|
|
|
|
document.querySelector("#generate_button_perso").addEventListener('mouseleave', e => {
|
|
|
|
|
document.querySelector("#generate_button_perso").style.cursor = 'default';
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (warning)
|
|
|
|
|
WarningMessage(warning)
|
|
|
|
|
else WarningMessage("");
|
|
|
|
|
if (launch !== undefined && launch !== null && launch === true && error === null) {
|
|
|
|
|
generate2(col, matchs, fork);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -197,6 +223,7 @@ function addGenForkInput() {
|
|
|
|
|
i.className = "fa fa-trash";
|
|
|
|
|
i.onclick = function () {
|
|
|
|
|
this.parentElement.remove();
|
|
|
|
|
calcul();
|
|
|
|
|
}
|
|
|
|
|
div.append(i);
|
|
|
|
|
document.querySelector("#gen_fork_div").appendChild(div);
|
|
|
|
@ -204,6 +231,7 @@ function addGenForkInput() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function tuto(niveau) {
|
|
|
|
|
setMode("Tuto");
|
|
|
|
|
windowWidth = window.innerWidth;
|
|
|
|
|
windowHeight = window.innerHeight;
|
|
|
|
|
var numberColonne1 = 2;
|
|
|
|
@ -443,42 +471,50 @@ function generate2(col, matchs, fork) {
|
|
|
|
|
compt.push([i, "normal"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//creation et lien
|
|
|
|
|
//attribution groupe
|
|
|
|
|
var listeLogiqueObj = new Array();
|
|
|
|
|
let i = 0;
|
|
|
|
|
let colTemp = col;
|
|
|
|
|
compt.forEach(function (element) {
|
|
|
|
|
if (element[1] === "normal") {
|
|
|
|
|
listeLogiqueObj.push({
|
|
|
|
|
if (colTemp[element[0] - 1] !== 0) {
|
|
|
|
|
var newLogiqueObj = {
|
|
|
|
|
id: "logique" + i,
|
|
|
|
|
col: element[0],
|
|
|
|
|
id1: null,
|
|
|
|
|
id2: null,
|
|
|
|
|
id3: null,
|
|
|
|
|
matchId1: null,
|
|
|
|
|
matchId2: null,
|
|
|
|
|
type: null,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (element[1] === "normal") {
|
|
|
|
|
newLogiqueObj.matchId1 = null;
|
|
|
|
|
} else {
|
|
|
|
|
listeLogiqueObj.push({
|
|
|
|
|
id: "logique" + i,
|
|
|
|
|
col: element[0],
|
|
|
|
|
id1: null,
|
|
|
|
|
id2: null,
|
|
|
|
|
id3: null,
|
|
|
|
|
matchId1: element[1],
|
|
|
|
|
type: null,
|
|
|
|
|
newLogiqueObj.matchId1 = element[1];
|
|
|
|
|
}
|
|
|
|
|
listeLogiqueObj.push(newLogiqueObj);
|
|
|
|
|
colTemp[element[0] - 1]--;
|
|
|
|
|
} else {
|
|
|
|
|
var allowed = [];
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
if (logique.col === element[0] && logique.same !== element[1])
|
|
|
|
|
allowed.push(logique);
|
|
|
|
|
});
|
|
|
|
|
allowed[getRandomArbitrary(0, allowed.length)].matchId2 = element[1];
|
|
|
|
|
}
|
|
|
|
|
i++;
|
|
|
|
|
});
|
|
|
|
|
console.log(listeLogiqueObj);
|
|
|
|
|
//Attribution des types
|
|
|
|
|
//num = liste de comptatibilité
|
|
|
|
|
|
|
|
|
|
let num2 = getRandomArbitrary(0, 3);
|
|
|
|
|
let num2 = getRandomArbitrary(0, 5);
|
|
|
|
|
for (x in compt) {
|
|
|
|
|
if (listeLogiqueObj[x].matchId1 !== null) {
|
|
|
|
|
if (getElementArray(listeLogiqueObj[x].matchId1, listeSame)[1] === null) {
|
|
|
|
|
getElementArray(listeLogiqueObj[x].matchId1, listeSame)[1] = num2;
|
|
|
|
|
num2 = getRandomArbitrary(0, 3);
|
|
|
|
|
num2 = getRandomArbitrary(0, 5);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
listeSame[x] = getElementArray(listeLogiqueObj[x].matchId1, listeSame);
|
|
|
|
|
}
|
|
|
|
@ -486,15 +522,22 @@ function generate2(col, matchs, fork) {
|
|
|
|
|
}
|
|
|
|
|
createStage("play_container");
|
|
|
|
|
stage.add(layer);
|
|
|
|
|
timeEnd = 1000;
|
|
|
|
|
timeEnd = 999;
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < colonneTot; i++) {
|
|
|
|
|
liveColonneNumber.push([]);
|
|
|
|
|
}
|
|
|
|
|
var col = [];
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
if (col[logique.col - 1] === null || col[logique.col - 1] === undefined || col[logique.col - 1] === 0)
|
|
|
|
|
col[logique.col - 1] = 1;
|
|
|
|
|
else col[logique.col - 1]++;
|
|
|
|
|
});
|
|
|
|
|
numberPerColonne = col;
|
|
|
|
|
initTimer();
|
|
|
|
|
//creation logique
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
if (getTypeFromSameMatch(listeSame, logique.matchId1) === null) logique.type = getRandomArbitrary(0, 3);
|
|
|
|
|
if (getTypeFromSameMatch(listeSame, logique.matchId1) === null) logique.type = getRandomArbitrary(0, 5);
|
|
|
|
|
else logique.type = getTypeFromSameMatch(listeSame, logique.matchId1);
|
|
|
|
|
switch (logique.type) {
|
|
|
|
|
case 0:
|
|
|
|
@ -506,8 +549,15 @@ function generate2(col, matchs, fork) {
|
|
|
|
|
case 2:
|
|
|
|
|
insertLogiqueColonne(logique.id, "inv", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
insertLogiqueColonne(logique.id, "nonou", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
insertLogiqueColonne(logique.id, "etnon", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var logiquesGen;
|
|
|
|
|
//creation de liens entre les portes logiques :
|
|
|
|
|
for (let col = 1; col < colonneTot; col++) {
|
|
|
|
|