diff --git a/site/js/const.js b/site/js/const.js index a7e8e61..5846447 100644 --- a/site/js/const.js +++ b/site/js/const.js @@ -28,6 +28,9 @@ const colorSwitchActiveBackground = "green"; //timer var timeEnd = 70; +//switch +var numberOfSwitch = 0; + //grid var colonneTot = 4; var numberPerColonne = [1,1,3]; diff --git a/site/js/createElement.js b/site/js/createElement.js index 4eb1599..8909800 100644 --- a/site/js/createElement.js +++ b/site/js/createElement.js @@ -3,7 +3,6 @@ function createEnd() { //find X and Y var X = stage.width() - stage.width() /100 * 10; - console.log(X); var Y = stage.height() / 3; var imageObj2 = new Image(); @@ -31,6 +30,13 @@ function createEnd() { } function createSwitch(id, x, y) { + var switche = { + id : id, + x : x, + y : y, + }; + switchsInfo.push(switche); + switchsInfoCopy.push(switche); switchs.push(id); var num = lineCount.length; lineCount.push(1); @@ -70,7 +76,8 @@ function createLink(entre, sortie) { case "switch": switch (whatIsElement(sortie)) { case "logique": - switch (giveLineId(sortie.name)) { + switch (giveLineId(sortie.name,entre)) { + case "id1": let switchMidX = entre.getX() + entre.getWidth(); let switchMidY = entre.getY() + entre.getHeight() / 2; @@ -96,7 +103,7 @@ function createLink(entre, sortie) { case "logique": switch (whatIsElement(sortie)) { case "logique": - switch (giveLineId(sortie.name)) { + switch (giveLineId(sortie.name,entre)) { case "id1": let switchMidX = entre.x + imageWidth; let switchMidY = entre.y + imageHeight / 2; @@ -120,7 +127,7 @@ function createLink(entre, sortie) { break; default: endLines.push(lineId); - createLine([entre.x + imageWidth, entre.y + imageHeight / 2, sortie.x, sortie.y + (imageHeight / end.position+1)*end.let], "line" + lineId); + createLine([entre.x + imageWidth, entre.y + imageHeight / 2, sortie.x, sortie.y + (imageHeight / end.position)*end.let], "line" + lineId); setLine(entre, "id3", "line" + lineId); end.let--; break; @@ -182,6 +189,7 @@ function createLogique(x, y, id, type) { } function switchCreator(number){ + numberOfSwitch = number; let split = number + 1; let space = (stage.height() - stage.height()/100*25) / split; for(let i = 1; i < number+1 ; i++){ @@ -201,4 +209,34 @@ function insertLogiqueColonne(nomLogique, TypeLogique, colonne){ } createLogique(X, Y, nomLogique,TypeLogique); liveColonneNumber[colonne].push(1); +} + +function createLinkSwitch(){ + var logique = null; + var distance = stage.width(); + //Trouver la porte logique la plus proche des switchs + logiques.forEach(function(element){ + if(element.id1 == null || element.id2 == null){ + if(element.x < distance){ + logique = element; + distance = element.x; + } + } + }); + var distanceSwitch = stage.height(); + var switchs = null; + switchsInfo.forEach(function(element){ + if(Math.abs(logique.y - element.y) < distanceSwitch){ + distanceSwitch = Math.abs(logique.y - element.y); + switchs = element; + } + }); + switchsInfo.splice( switchsInfo.indexOf(switchs), 1 ); + createLink(stage.findOne("#"+switchs.id), findLogique(logique.name)); +} + +function createAllLinkSwitch(){ + for(let i = 0;i < numberOfSwitch; i++){ + createLinkSwitch(); + } } \ No newline at end of file diff --git a/site/js/creator.js b/site/js/creator.js index 3462d4d..14f2428 100644 --- a/site/js/creator.js +++ b/site/js/creator.js @@ -45,15 +45,18 @@ function createGame2(){ insertLogiqueColonne("logique4", "etnon", 2); insertLogiqueColonne("logique5", "inv", 2); - createLink(stage.findOne("#s7"), findLogique("logique5")); + createLink(findLogique("logique1"),findLogique("logique2")); + createLink(findLogique("logique2"),findLogique("logique3")); + + 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(findLogique("logique1"),findLogique("logique2")); - createLink(stage.findOne("#s4"), findLogique("logique3")); - createLink(findLogique("logique2"),findLogique("logique3")); + createLink(stage.findOne("#s4"), findLogique("logique3"));*/ initAllSwitch(); createEnd(); initEnd(); diff --git a/site/js/logique.js b/site/js/logique.js index 8ecd754..2c62d5b 100644 --- a/site/js/logique.js +++ b/site/js/logique.js @@ -8,32 +8,50 @@ function findLogique(logiqueId) { return elem; } -function giveLineId(logiqueId){ +function giveLineId(logiqueId,entre) { + var newEntre = entre; + if(entre.id !== undefined){ + switchsInfoCopy.forEach(function(element){ + if(entre.id() == element.id){ + + newEntre = element; + } + }); + } let lineId = null; let logique = findLogique(logiqueId); - if(logique.type === "inv"){ - if(logique.id1 == null){ - lineId = "id1"; + if(logique.y >= newEntre.y){ + if (logique.type === "inv") { + if (logique.id1 == null) { + lineId = "id1"; + } } - } - else{ - logiques.forEach(function(element, index) { - if (element.name === logique.name) { - Object.keys(element).map(function(objectKey, index) { - if(objectKey == "id1"){ - if(element[objectKey] == null){ - lineId = "id1"; - } - } - if(objectKey == "id2"){ - if(element[objectKey] == null){ - lineId = "id2"; - } - } - }); + else { + if (logique.id1 == null) { + lineId = "id1"; + } else if (logique.id2 == null) { + lineId = "id2"; } - }); - } + + + } + }else{ + if (logique.type === "inv") { + if (logique.id1 == null) { + lineId = "id1"; + } + } + else { + if (logique.id2 == null) { + lineId = "id2"; + } else if (logique.id1 == null) { + lineId = "id1"; + } + + + } + } + return lineId } diff --git a/site/vues/jeu.html b/site/vues/jeu.html index 6544579..294e690 100644 --- a/site/vues/jeu.html +++ b/site/vues/jeu.html @@ -63,7 +63,7 @@