From 161a1be91e445d2233b7d531dbb4552ef186fdbf Mon Sep 17 00:00:00 2001 From: pisouvigne Date: Wed, 24 Jun 2020 19:06:02 +0200 Subject: [PATCH] fix de quelques trucs --- site/vue/index.html | 8 +++- site/vue/js/const.js | 4 +- site/vue/js/func.js | 65 +++++++++++++++++++++++----- site/vue/js/generateGame.js | 86 ++++++++++++++++++++++++++++++++++++- site/vue/js/init.js | 4 +- site/vue/js/main.js | 15 ++++--- 6 files changed, 159 insertions(+), 23 deletions(-) diff --git a/site/vue/index.html b/site/vue/index.html index 9e76cc4..484cfa8 100644 --- a/site/vue/index.html +++ b/site/vue/index.html @@ -23,7 +23,7 @@
-
+ @@ -103,7 +103,8 @@

click(s)


-
+

@@ -495,7 +496,10 @@ diff --git a/site/vue/js/const.js b/site/vue/js/const.js index 6dee878..84c21ac 100644 --- a/site/vue/js/const.js +++ b/site/vue/js/const.js @@ -62,4 +62,6 @@ var click = 0; var successPanel = true; -var arrayPorte = []; \ No newline at end of file +var arrayPorte = []; + +const NOMBRETEST = 500; \ No newline at end of file diff --git a/site/vue/js/func.js b/site/vue/js/func.js index c57ad0c..55a1ebf 100644 --- a/site/vue/js/func.js +++ b/site/vue/js/func.js @@ -212,6 +212,7 @@ function checkEntreCroisement(logiqueId) { let logique = findLogique(logiqueId); if (logique.id1 != null && logique.id2 != null) { if (stage.findOne("#" + logique.id1).points()[1] > stage.findOne("#" + logique.id2).points()[1]) { + if (getSwitchFromLine(logique.id1) != null && getSwitchFromLine(logique.id2) != null) { let switch1 = getSwitchFromLine(logique.id1).id; let switch2 = getSwitchFromLine(logique.id2).id; @@ -232,8 +233,32 @@ function checkEntreCroisement(logiqueId) { logique.id2 = null; createLink(logique1, logique); createLink(logique2, logique); + + } + else if (getSwitchFromLine(logique.id1) != null && getLogiqueFromLine(logique.id2) != null) { + let logique1 = getLogiqueFromLine(logique.id2); + let switch1 = getSwitchFromLine(logique.id1).id; + removeLine(logique.id1); + removeLine(logique.id2); + logique.id1 = null; + logique.id2 = null; + createLink(logique1, logique); + createLink(stage.findOne("#" + switch1), logique); + } + else if (getLogiqueFromLine(logique.id1) != null && getSwitchFromLine(logique.id2) != null) { + let logique1 = getLogiqueFromLine(logique.id1); + let switch1 = getSwitchFromLine(logique.id2).id; + removeLine(logique.id1); + removeLine(logique.id2); + logique.id1 = null; + logique.id2 = null; + createLink(stage.findOne("#" + switch1), logique); + createLink(logique1, logique); } - croisement = true; + else { + croisement = true; + } + } } return croisement; @@ -360,13 +385,12 @@ function isLineCollapsing() { switchsInfoCopy.forEach(function (element) { element.id3.forEach(function (line) { if (Math.abs(element.y - stage.findOne("#" + line).points()[7]) > distance) { - console.log(element.name); isCollapsing = true; } }) }); } - return false; + return isCollapsing; } function getRandomArbitrary(min, max) { @@ -408,7 +432,7 @@ function checkIfEnd() { return ter; } -function checkEnd() { +function checkEnd(mode) { let ter = true; endLines.forEach(function (element) { if (stage.findOne("#line" + element).stroke() == colorLineInnactive) { @@ -417,11 +441,11 @@ function checkEnd() { } }); if (ter && !isTuto) { - setTimeout(() => { success(); }, 100); + setTimeout(() => { success(mode); }, 100); } } -function success() { +function success(mode) { timeTot = timeTot + timer.getTimeValues().seconds; timer.stop(); stage.findOne("#end").fill("yellow"); @@ -429,6 +453,7 @@ function success() { if (successPanel) { openModal("success"); document.querySelector("#click_number").innerHTML = click; + document.querySelector("#next_level_button").onclick = function () { closeModal('success'); nextLevel(mode); } var previewStage = new Konva.Stage({ container: 'show_stage', width: window.innerWidth / 1.5, @@ -440,7 +465,7 @@ function success() { previewStage.add(previewLayer); previewLayer.batchDraw(); } else { - setTimeout(() => { nextLevel(); }, 1000); + setTimeout(() => { nextLevel(mode); }, 1000); } } @@ -449,9 +474,13 @@ function successCheck() { else successPanel = false; } -function nextLevel() { +function nextLevel(mode) { niveauActuel++; - launchGameOne(); + if (mode != undefined && mode != null && mode === "tuto") { + launchTuto(); + } else { + launchGameOne(); + } } function calculNombreSwitch() { @@ -577,13 +606,19 @@ function modePerso() { showDiv(document.querySelector("#PersoSetupPage")); } function playNormal() { - hideDiv(document.querySelector("#levelSelectionPage")); showDiv(document.querySelector("#playPage")); niveauActuel = 1; timeTot = 0; launchGameOne(); } +function modeTuto() { + hideDiv(document.querySelector("#levelSelectionPage")); + showDiv(document.querySelector("#playPage")); + niveauActuel = 1; + timeTot = 0; + launchTuto(); +} function wait(mode, btn) { var time = 300; spin(btn); @@ -594,6 +629,9 @@ function wait(mode, btn) { case "perso": setTimeout(modePerso, time); break; + case "tuto": + setTimeout(modeTuto, time); + break; } } @@ -654,6 +692,13 @@ function launchGameOne() { resetAllTabs(false); gameOne(); } +function launchTuto() { + document.querySelector(".niveau").innerHTML = niveauActuel; + timer.stop(); + timer.reset(); + resetAllTabs(false); + tuto(); +} function clearArray(arr) { while (arr.length > 0) { diff --git a/site/vue/js/generateGame.js b/site/vue/js/generateGame.js index 0588f48..570a751 100644 --- a/site/vue/js/generateGame.js +++ b/site/vue/js/generateGame.js @@ -51,7 +51,6 @@ function loadPerso() { colonneTot = 0; while (porteTotal > 2) { porteTotal = porteTotal / 2; - console.log(porteTotal); numberPerColonne.push(porteTotal); colonneTot++; } @@ -66,10 +65,22 @@ function loadPerso() { } arrayPorte = arrayPorte.filter(function (e) { if (e[0] === true) return e; }) generate_perso_level(); + isLineCollapsing() click = 0; - while (checkIfEnd() || isLineCollapsing()) { + let i = 0; + var error = false; + while (checkIfEnd()) { + if (i === NOMBRETEST) { + error = true; + break; + } resetAllTabs(false); generate_perso_level(); + isLineCollapsing(); + i++; + } + if (error) { + document.location.reload(true); } } function spin(button) { @@ -83,6 +94,62 @@ function buttonSpin(button) { setTimeout(loadPerso, 1000); } +function tuto(niveau) { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + var numberColonne1 = 2; + var numberColonne2 = 1; + var isEtNonAllowed = false; + var isOuNonAllowed = false; + var isNotAllowed = false; + var isOuAllowed = false; + var finish = false; + var firstTime = []; + switch (niveauActuel) { + case 1: + firstTime.push("et"); + break; + case 2: + firstTime.push("inv"); + break; + case 3: + firstTime.push("ou"); + break; + case 4: + firstTime.push("nand"); + break; + case 5: + firstTime.push("nonou"); + break; + default: + finish = true; + break; + } + isTuto = false; + createStage("play_container"); + stage.add(layer); + colonneTot = 3; + numberPerColonne = [numberColonne1, numberColonne2, 2]; + var logiqueCount = 0; + + if (firstTime.length > 0) { + numberColonne1 = 1; + numberColonne2 = 0; + numberPerColonne = [numberColonne1, numberColonne2]; + liveColonneNumber.push([]); + timeEnd = 20; + insertLogiqueColonne("logique" + logiqueCount, firstTime[0], 0); + if (allowedInfoPorte) { + openModal('firstTime' + firstTime[0]); + timer.pause(); + } + } + logiques.forEach(function (element) { + createLinkAuto(element.name); + }); + initEndGame("tuto"); +} + function createGameOne(niveau) { windowWidth = window.innerWidth; @@ -231,3 +298,18 @@ function createGameOne(niveau) { }); initEndGame(); } + +function generateFromBottom() { + var NombrecolonneTest = 2; + var numberPerColonneTest = [3, 2]; + var porteBool = [[true, "et"], [true, "ou"], [true, "inv"]]; + + for (let i = NombrecolonneTest; i > 0; i--) { + for (let j = 0; j < numberPerColonneTest[i - 1]; j++) { + let numberRandom = getRandomArbitrary(0, porteBool.length); + } + } + + + +} \ No newline at end of file diff --git a/site/vue/js/init.js b/site/vue/js/init.js index d7095dd..9d91903 100644 --- a/site/vue/js/init.js +++ b/site/vue/js/init.js @@ -1,4 +1,4 @@ -function initAllSwitch() { +function initAllSwitch(mode) { switchs.forEach(function (element) { let switche = stage.findOne("#" + element); @@ -7,7 +7,7 @@ function initAllSwitch() { activeSwitch(switche.id()); checkAllSortieLogique(); layer.draw(); - checkEnd(); + checkEnd(mode); }); switche.on('mouseover', function () { document.body.style.cursor = "pointer"; diff --git a/site/vue/js/main.js b/site/vue/js/main.js index ffcbf70..da10982 100644 --- a/site/vue/js/main.js +++ b/site/vue/js/main.js @@ -71,11 +71,17 @@ function resetAllTabs(save) { function gameOne() { document.querySelector("#play_container").style.maxHeight = window.innerHeight / 1.5 + "px"; createGameOne(niveauActuel); + isLineCollapsing(); click = 0; + var i = 0; while (checkIfEnd() || isLineCollapsing()) { + if (i === NOMBRETEST) { + break; + } resetAllTabs(false); - console.log("arf"); createGameOne(niveauActuel); + isLineCollapsing(); + i++; } //console.log(stage); //gameData = new GameData(height,width,2,10,"mode1",false,"play_container"); @@ -85,17 +91,14 @@ function gameOne() { } -function initEndGame() { - - - +function initEndGame(mode) { calculNombreSwitch(); switchCreator(numberOfSwitch); createAllLinkSwitch(); - initAllSwitch(); + initAllSwitch(mode); logiques.forEach(function (element) { checkEntreCroisement(element.name);