pisouvigne 5 years ago
parent 9af280448c
commit 66607aa1ad

@ -620,11 +620,8 @@
<script src="js/db.js"></script>
<script src="js/generateGame.js"></script>
<script>
var matchs = [[1, 3], [1, 2], [2, 2]];
var listePorteLogique = [[true, "et"], [true, "inv"], [true, "ou"]];
var col = [5, 3, 2];
generator(matchs, listePorteLogique, col);
getTest();
//getTest();
initAll();
</script>

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

@ -1,5 +1,4 @@
function getTest() {
console.log("oui");
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {

@ -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() {

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

@ -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());
//}
});
}

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

Loading…
Cancel
Save