diff --git a/site/js/const.js b/site/js/const.js index 5846447..3c0435d 100644 --- a/site/js/const.js +++ b/site/js/const.js @@ -33,5 +33,5 @@ var numberOfSwitch = 0; //grid var colonneTot = 4; -var numberPerColonne = [1,1,3]; -var liveColonneNumber = [[],[],[]]; \ No newline at end of file +var numberPerColonne = []; +var liveColonneNumber = []; \ No newline at end of file diff --git a/site/js/createElement.js b/site/js/createElement.js index 8909800..a6d7e6c 100644 --- a/site/js/createElement.js +++ b/site/js/createElement.js @@ -2,7 +2,7 @@ function createEnd() { //find X and Y - var X = stage.width() - stage.width() /100 * 10; + var X = stage.width() - stage.width() /100 * 5; var Y = stage.height() / 3; var imageObj2 = new Image(); @@ -167,9 +167,9 @@ function createLogique(x, y, id, type) { case "inv": imageObj.src = pathImg + imageLogiqueInv; break; - case "nonou": - imageObj.src = pathImg + imageLogiqueNonOu; - break; + case "nonou": + imageObj.src = pathImg + imageLogiqueNonOu; + break; } imageObj.id = id; @@ -239,4 +239,35 @@ function createAllLinkSwitch(){ for(let i = 0;i < numberOfSwitch; i++){ createLinkSwitch(); } +} + +function createLinkAuto(logiqueId){ + var logique = findLogique(logiqueId); + var ligneSupCoor = null; + var stop = false; + //on cherche la ligne supérieur + logiques.forEach(function(element){ + if(!stop){ + if(logique.x < element.x){ + stop = true; + ligneSupCoor = element.x; + } + } + }); + if(ligneSupCoor != null){ + //on stock les portes logiques de la lignes supérieur (si il reste de la place dans leur entrees) + var ligneSup = []; + logiques.forEach(function(element){ + + if(element.x == ligneSupCoor){ + if(checkLogiqueLines(element.name,"id1") == false || checkLogiqueLines(element.name,"id2") == false){ + ligneSup.push(element); + } + } + }); + //on tire au sort + let sortie = getRandomArbitrary(0,ligneSup.length); + sortie = ligneSup[sortie]; + createLink(findLogique(logiqueId),findLogique(sortie.name)); + } } \ No newline at end of file diff --git a/site/js/creator.js b/site/js/creator.js index 14f2428..0719c16 100644 --- a/site/js/creator.js +++ b/site/js/creator.js @@ -1,4 +1,4 @@ -function createGame1(){ +function createGame1() { timeEnd = 20; @@ -11,12 +11,12 @@ function createGame1(){ createSwitch("s5", 20, 700); createSwitch("s6", 20, 600); createSwitch("s7", 350, 600); - - createLogique(200, 100, "logique1","et"); - createLogique(300,200,"logique2","nonou"); - createLogique(500,300,"logique3","et"); - createLogique(500,400,"logique4","etnon"); - createLogique(500,500,"logique5","inv"); + + createLogique(200, 100, "logique1", "et"); + createLogique(300, 200, "logique2", "nonou"); + createLogique(500, 300, "logique3", "et"); + createLogique(500, 400, "logique4", "etnon"); + createLogique(500, 500, "logique5", "inv"); createLink(stage.findOne("#s7"), findLogique("logique5")); createLink(stage.findOne("#s5"), findLogique("logique4")); @@ -24,14 +24,14 @@ function createGame1(){ createLink(stage.findOne("#s3"), findLogique("logique2")); createLink(stage.findOne("#s2"), findLogique("logique1")); createLink(stage.findOne("#s1"), findLogique("logique1")); - createLink(findLogique("logique1"),findLogique("logique2")); + createLink(findLogique("logique1"), findLogique("logique2")); createLink(stage.findOne("#s4"), findLogique("logique3")); - createLink(findLogique("logique2"),findLogique("logique3")); + createLink(findLogique("logique2"), findLogique("logique3")); initAllSwitch(); createEnd(800, 320); initEnd(); } -function createGame2(){ +function createGame2() { timeEnd = 40; @@ -45,19 +45,64 @@ function createGame2(){ insertLogiqueColonne("logique4", "etnon", 2); insertLogiqueColonne("logique5", "inv", 2); - createLink(findLogique("logique1"),findLogique("logique2")); - createLink(findLogique("logique2"),findLogique("logique3")); + createLink(findLogique("logique1"), findLogique("logique2")); + createLink(findLogique("logique2"), findLogique("logique3")); + + createAllLinkSwitch(); + + initAllSwitch(); + createEnd(); + initEnd(); +} + +function generatorGame() { + + timeEnd = getRandomArbitrary(15, 50); + + initTimer(); + + var logiqueCount = 0; + + colonneTot = getRandomArbitrary(2, 3); + + for (let i = 0; i < colonneTot; i++) { + liveColonneNumber.push([]); + } + + for (let i = 0; i < colonneTot; i++) { + numberPerColonne[i] = getRandomArbitrary(2, 4); + for (let j = 0; j < numberPerColonne[i]; j++) { + logiqueCount++; + let type = null; + switch (getRandomArbitrary(0, 4)) { + case 0: + type = "et"; + break; + case 1: + type = "ou"; + break; + case 2: + type = "etnon"; + break; + case 3: + type = "nonou"; + break; + } + insertLogiqueColonne("logique" + logiqueCount, type, i); + } + } + + logiques.forEach(function (element) { + createLinkAuto(element.name); + }); + + calculNombreSwitch(); + switchCreator(numberOfSwitch); createAllLinkSwitch(); - /*createLink(stage.findOne("#s7"), findLogique("logique5")); - createLink(stage.findOne("#s5"), findLogique("logique4")); - createLink(stage.findOne("#s6"), findLogique("logique4")); - createLink(stage.findOne("#s3"), findLogique("logique2")); - createLink(stage.findOne("#s2"), findLogique("logique1")); - createLink(stage.findOne("#s1"), findLogique("logique1")); - createLink(stage.findOne("#s4"), findLogique("logique3"));*/ initAllSwitch(); createEnd(); initEnd(); + } \ No newline at end of file diff --git a/site/js/func.js b/site/js/func.js index c0e6a7a..6319442 100644 --- a/site/js/func.js +++ b/site/js/func.js @@ -109,6 +109,10 @@ function checkSortieLogique(logiqueId) { }); } +function getRandomArbitrary(min, max) { + return Math.floor(Math.random() * (max - min) + min); +} + function isElementExisting(elementId) { if (stage.findOne("#" + elementId) != null) { return true; @@ -132,9 +136,23 @@ function checkEnd() { } }); if (ter) { - setTimeout(() => { alert("Niveau terminé"); }, 40); + setTimeout(() => { localStorage.setItem("niveau", parseInt(niveauActuel)+1); document.location.reload(true); }, 100); } } +function calculNombreSwitch(){ + var entrelibre = 0; + logiques.forEach(function(element){ + + if(element.id1 == null){ + entrelibre++; + } + if(element.id2 == null && element.type != "inv"){ + entrelibre++; + } + }); + numberOfSwitch = entrelibre; +} + diff --git a/site/vues/jeu.html b/site/vues/jeu.html index 294e690..29fef4b 100644 --- a/site/vues/jeu.html +++ b/site/vues/jeu.html @@ -53,7 +53,7 @@
-

Niveau 26

+

Niveau 0

Temps : 0 m 0 s @@ -65,6 +65,13 @@