+
@@ -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);