diff --git a/site/js/func.js b/site/js/func.js index 9240b53..f99727d 100644 --- a/site/js/func.js +++ b/site/js/func.js @@ -1,4 +1,4 @@ -function createEtLogique(x, y,id) { +function createEtLogique(x, y, id) { var imageObj = new Image(); imageObj.onload = function () { var et = new Konva.Image({ @@ -14,99 +14,72 @@ function createEtLogique(x, y,id) { layer.add(et); layer.batchDraw(); }; - imageObj.src = 'img/logiqueet.png'; + imageObj.src = '../img/logiqueet.png'; imageObj.id = id; var logique = { - name : id, - x : x, - y : y, - type : "et", - id1 : null, - id2 : null, - id3 : null, - } + name: id, + x: x, + y: y, + type: "et", + id1: null, + id2: null, + id3: null, + } logiques.push(logique); } -function findLogique(logiqueId){ - let elem = null; - logiques.forEach(function(element) { - if(element.name === logiqueId) { - elem = element; - } - }); - return elem; -} -function checkLogiqueLines(logiqueId,lineId){ - let logique = findLogique(logiqueId); - switch(lineId){ - case "id1" : - if (lineId.id1 == null) return false; - return true; - break; - case "id2" : - if (lineId.id2 == null) return false; - return true; - break; - case "id3" : - if (lineId.id3 == null) return false; - return true; - } -} -function whatIsElement(element){ - - if(findLogique(element.name) == null){ + + +function whatIsElement(element) { + + if (findLogique(element.name) == null) { return "switch"; } else { return "logique"; } } -function setLine(logiqueElement,lineId,lineName){ - logiques.forEach(function(element) { - if(element.name === logiqueElement.name) { - element.forEach(function(elem){ - if(elem == lineId){ - elem = lineName; +function setLine(logiqueElement, lineId, lineName) { + logiques.forEach(function (element, index) { + if (element.name === logiqueElement.name) { + Object.keys(element).map(function(objectKey, index) { + if(objectKey == lineId){ + element[objectKey] = lineName; } - }); + }); } }); } -function createLink(entre,sortie){ +function createLink(entre, sortie) { //entre est une porte logique - switch(whatIsElement(entre)){ - case "switch" : - switch(whatIsElement(sortie)){ - case "logique" : - if(!checkLogiqueLines(sortie.name,"id2")){ - let switchMidX = entre.getX() + entre.getWidth(); - let switchMidY = entre.getY() + entre.getHeight()/2; - - let logiqueMidX = sortie.x; - let logiqueMidY = sortie.y + (50/3)*2; - createLine([switchMidX,switchMidY,logiqueMidX,logiqueMidY],"line2"); - setLine(sortie,"id2","line2"); - return; - } - if(!checkLogiqueLines(sortie.name,"id1")){ - let switchMidX = entre.getX() + entre.getWidth(); - let switchMidY = entre.getY() + entre.getHeight()/2; - - let logiqueMidX = sortie.x; - let logiqueMidY = sortie.y + (50/3)*3; - createLine([switchMidX,switchMidY,logiqueMidX,logiqueMidY],"line1"); - setLine(sortie,"id1","line1"); - return; + switch (whatIsElement(entre)) { + case "switch": + switch (whatIsElement(sortie)) { + case "logique": + switch (giveLineId(sortie.name)) { + case "id1": + let switchMidX = entre.getX() + entre.getWidth(); + let switchMidY = entre.getY() + entre.getHeight() / 2; + + let logiqueMidX = sortie.x; + let logiqueMidY = sortie.y + (50 / 3); + createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line1"); + setLine(sortie, "id1", "line1"); + break; + case "id2": + createLine([entre.getX() + entre.getWidth(), entre.getY() + entre.getHeight() / 2, sortie.x, sortie.y + (50 / 3) * 2], "line2"); + setLine(sortie, "id2", "line2"); + break; } } } } + function createLine(points, id) { let line = new Konva.Line({ points: points, @@ -119,7 +92,7 @@ function createLine(points, id) { layer.add(line); } -function createSwitch(num,id,x,y){ +function createSwitch(num, id, x, y) { var rect1 = new Konva.Rect({ x: x, y: y, @@ -138,31 +111,32 @@ function createSwitch(num,id,x,y){ fontSize: 30, fontFamily: 'Calibri', fill: 'black', - id: "text"+num, + id: "text" + num, }); layer.add(simpleText); rect1.on('click', function () { - var et = stage.findOne("#text"+num); - var line = stage.findOne("#line"+num); + var et = stage.findOne("#text" + num); + var line = stage.findOne("#line" + num); + console.log("#line" + num); var text = et.text() == '1' ? '0' : '1'; - var colorline = et.text() == '1' ? 'black' : 'blue'; + var colorline = et.text() == '1' ? 'black' : '#f6cd61'; line.stroke(colorline); et.text(text); layer.draw(); }); - + } -function isElementExisting(elementId){ - if(stage.findOne("#"+elementId) != null){ +function isElementExisting(elementId) { + if (stage.findOne("#" + elementId) != null) { return true; } return false; } -function checkLineSwitch(switchId){ - if(stage.findOne("#"+switchId) != null){ +function checkLineSwitch(switchId) { + if (stage.findOne("#" + switchId) != null) { return true; } return false; @@ -184,6 +158,5 @@ function initLayer() { layer.add(yoda); layer.batchDraw(); }; - imageObj2.src = 'img/idea_white.png'; - + imageObj2.src = '../img/idea_white.png'; } \ No newline at end of file diff --git a/site/js/logique.js b/site/js/logique.js new file mode 100644 index 0000000..91e8736 --- /dev/null +++ b/site/js/logique.js @@ -0,0 +1,45 @@ +function findLogique(logiqueId) { + let elem = null; + logiques.forEach(function (element) { + if (element.name === logiqueId) { + elem = element; + } + }); + return elem; +} + +function giveLineId(logiqueId){ + let lineId = null; + let logique = findLogique(logiqueId); + 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"; + } + } + }); + } + }); + return lineId +} + +function checkLogiqueLines(logiqueId, lineId) { + let logique = findLogique(logiqueId); + logiques.forEach(function (element, index) { + if (element.name === logique.name) { + Object.keys(element).map(function(objectKey, index) { + if(objectKey == lineId && objectKey != null){ + return true; + } + }); + } + }); + return false; +} \ No newline at end of file diff --git a/site/vues/jeu.html b/site/vues/jeu.html index 1d71fd5..7b8907a 100644 --- a/site/vues/jeu.html +++ b/site/vues/jeu.html @@ -1,9 +1,11 @@ + + @@ -21,11 +23,13 @@ -
+
- + createEtLogique(300, 100, "logique1"); + createSwitch(1, "et", 20, 20); + createSwitch(2, "et2", 20, 150); + createLink(stage.findOne("#et2"), findLogique("logique1")); + createLink(stage.findOne("#et"), findLogique("logique1")); + + \ No newline at end of file