From b1809b3eb9ea2fc3d2f6db17706a7b11c6690480 Mon Sep 17 00:00:00 2001 From: pisouvigne Date: Tue, 2 Jun 2020 13:02:06 +0200 Subject: [PATCH] =?UTF-8?q?am=C3=A9liorations=20des=20liens=20entres=20por?= =?UTF-8?q?tes=20logiques,=20et=20entre=20switch=20et=20porte=20logiques,?= =?UTF-8?q?=20les=20portes=20logiques=20laisse=20passer=20le=20courant=20e?= =?UTF-8?q?n=20suivant=20de=20ce=20qu'elles=20recoivent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/js/func.js | 121 ++++++++++++++++++++++++++++++++++++------- site/vues/index.html | 1 - site/vues/jeu.html | 32 +++++++----- 3 files changed, 120 insertions(+), 34 deletions(-) diff --git a/site/js/func.js b/site/js/func.js index f99727d..4b226e2 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, type) { var imageObj = new Image(); imageObj.onload = function () { var et = new Konva.Image({ @@ -21,7 +21,7 @@ function createEtLogique(x, y, id) { name: id, x: x, y: y, - type: "et", + type: type, id1: null, id2: null, id3: null, @@ -54,7 +54,7 @@ function setLine(logiqueElement, lineId, lineName) { }); } -function createLink(entre, sortie) { +function createLink(entre, sortie,lineId) { //entre est une porte logique switch (whatIsElement(entre)) { case "switch": @@ -67,18 +67,94 @@ function createLink(entre, sortie) { let logiqueMidX = sortie.x; let logiqueMidY = sortie.y + (50 / 3); - createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line1"); - setLine(sortie, "id1", "line1"); + createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line"+lineId); + setLine(sortie, "id1", "line"+lineId); + entre.id3 = "line"+lineId; 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"); + createLine([entre.getX() + entre.getWidth(), entre.getY() + entre.getHeight() / 2, sortie.x, sortie.y + (50 / 3) * 2], "line"+lineId); + setLine(sortie, "id2", "line"+lineId); + entre.id3 = "line"+lineId; break; } } + break; + case "logique" : + switch (whatIsElement(sortie)) { + case "logique": + switch (giveLineId(sortie.name)) { + case "id1": + let switchMidX = entre.x + 100; + let switchMidY = entre.y + 50 / 2; + + let logiqueMidX = sortie.x; + let logiqueMidY = sortie.y + (50 / 3); + createLine([switchMidX, switchMidY, logiqueMidX, logiqueMidY], "line"+lineId); + setLine(sortie, "id1", "line"+lineId); + setLine(entre, "id3", "line"+lineId); + break; + case "id2": + createLine([entre.x + 100, entre.y + 50 / 2, sortie.x, sortie.y + (50 / 3) * 2], "line"+lineId); + setLine(sortie, "id2", "line"+lineId); + setLine(entre, "id3", "line"+lineId); + break; + } + } + break; } } +function changeLineColor(idLine){ + let line = stage.findOne("#"+idLine); + var colorline = line.stroke() == '#f6cd61' ? 'black' : '#f6cd61'; + line.stroke(colorline); +} +function changeLineColorBlack(idLine){ + let line = stage.findOne("#"+idLine); + line.stroke("black"); +} +function changeLineColorYellow(idLine){ + let line = stage.findOne("#"+idLine); + line.stroke("#f6cd61"); +} + +function checkAllSortieLogique(){ + logiques.forEach(function(element){ + checkSortieLogique(element.name); + }); +} + +function checkSortieLogique(logiqueId){ + let logique = findLogique(logiqueId); + logiques.forEach(function (element, index) { + if (element.name === logique.name) { + let line1State,line2State; + let id1Color = stage.findOne("#"+element.id1).stroke(); + let id2Color = stage.findOne("#"+element.id2).stroke(); + if(id1Color == "black"){ + line1State = false; + } else { + line1State = true; + } + if(id2Color == "black"){ + line2State = false; + } else { + line2State = true; + } + switch(logique.type){ + case "et" : + if(line1State == true && line2State == true){ + changeLineColorYellow(element.id3); + } + else{ + changeLineColorBlack(element.id3); + } + break; + } + } +}); +} + function createLine(points, id) { let line = new Konva.Line({ @@ -92,7 +168,10 @@ function createLine(points, id) { layer.add(line); } -function createSwitch(num, id, x, y) { +function createSwitch(id, x, y) { + switchs.push(id); + var num = lineCount.length; + lineCount.push(1); var rect1 = new Konva.Rect({ x: x, y: y, @@ -101,6 +180,7 @@ function createSwitch(num, id, x, y) { stroke: 'black', strokeWidth: 4, id: id, + id3 : null, }); layer.add(rect1); @@ -111,21 +191,24 @@ function createSwitch(num, id, x, y) { fontSize: 30, fontFamily: 'Calibri', fill: 'black', - id: "text" + num, + id: "text" + id, }); layer.add(simpleText); - rect1.on('click', function () { - 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' : '#f6cd61'; - line.stroke(colorline); - et.text(text); - layer.draw(); - }); + + +} + +function initAllSwitch(){ + switchs.forEach(function(element){ + let switche = stage.findOne("#"+element); + switche.on('click', function () { + changeLineColor(switche.id3); + checkSortieLogique("logique1"); + layer.draw(); + }); + }); } function isElementExisting(elementId) { diff --git a/site/vues/index.html b/site/vues/index.html index f4f5b08..b64584e 100644 --- a/site/vues/index.html +++ b/site/vues/index.html @@ -58,7 +58,6 @@ initLayer(); createEtLogique(300, 50, "logique1"); - createSwitch(1,"et",20,20); createSwitch(2,"et2",20,150); diff --git a/site/vues/jeu.html b/site/vues/jeu.html index 7b8907a..af4dca5 100644 --- a/site/vues/jeu.html +++ b/site/vues/jeu.html @@ -23,30 +23,34 @@ -
+
+ createSwitch("et", 20, 20); + createSwitch("et2", 20, 150); + createSwitch("et3", 20, 300); + createLink(stage.findOne("#et3"), findLogique("logique2"),3); + createLink(stage.findOne("#et2"), findLogique("logique1"),1); + createLink(stage.findOne("#et"), findLogique("logique1"),0); + createLink(findLogique("logique1"),findLogique("logique2"),2); + initAllSwitch(); + + \ No newline at end of file