You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
395 lines
11 KiB
395 lines
11 KiB
const isTrue = (currentValue) => currentValue[0] == true;
|
|
|
|
|
|
|
|
function generate_perso_level() {
|
|
|
|
var isEtNonAllowed = false;
|
|
var isOuNonAllowed = false;
|
|
var isNotAllowed = false;
|
|
var isOuAllowed = false;
|
|
timeEnd = 25;
|
|
double = false;
|
|
isTuto = false;
|
|
|
|
createStage("play_container");
|
|
stage.add(layer);
|
|
var logiqueCount = 0;
|
|
for (let i = 0; i < colonneTot; i++) {
|
|
liveColonneNumber.push([]);
|
|
}
|
|
for (let i = 0; i < colonneTot; i++) {
|
|
for (let j = 0; j < numberPerColonne[i]; j++) {
|
|
logiqueCount++;
|
|
let numberRandom = getRandomArbitrary(0, arrayPorte.length);
|
|
insertLogiqueColonne("logique" + logiqueCount, arrayPorte[numberRandom][1], i);
|
|
}
|
|
}
|
|
|
|
|
|
logiques.forEach(function (element) {
|
|
createLinkAuto(element.name);
|
|
});
|
|
initEndGame();
|
|
timer.stop();
|
|
}
|
|
|
|
|
|
|
|
function loadPerso() {
|
|
|
|
arrayPorte = [[document.querySelector("#logique1").checked, "et"], [document.querySelector("#logique2").checked, "ou"], [document.querySelector("#logique3").checked, "inv"], [document.querySelector("#logique4").checked, "etnon"], [document.querySelector("#logique5").checked, "nonou"]];
|
|
document.querySelector("#PersoSetupPage").style.display = 'none';
|
|
document.querySelector("#playPage").style.display = 'block';
|
|
resetAllTabs(false);
|
|
niveauActuel = 1;
|
|
timeTot = 0;
|
|
windowWidth = window.innerWidth;
|
|
windowHeight = window.innerHeight;
|
|
if (document.querySelector("#colonne_number_setup").value == 0) {
|
|
var porteTotal = parseInt(document.querySelector("#colonne_number_setup_global").value);
|
|
colonneTot = 0;
|
|
while (porteTotal > 2) {
|
|
porteTotal = porteTotal / 2;
|
|
numberPerColonne.push(porteTotal);
|
|
colonneTot++;
|
|
}
|
|
numberPerColonne.push(porteTotal);
|
|
colonneTot++;
|
|
|
|
} else {
|
|
colonneTot = parseInt(document.querySelector("#colonne_number_setup").value);
|
|
document.querySelectorAll(".input_refresh").forEach(function (element) {
|
|
numberPerColonne.push(parseInt(element.value));
|
|
});
|
|
}
|
|
arrayPorte = arrayPorte.filter(function (e) { if (e[0] === true) return e; })
|
|
generate_perso_level();
|
|
isLineCollapsing()
|
|
click = 0;
|
|
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) {
|
|
button.childNodes[3].classList = "fa fa-spinner";
|
|
}
|
|
function stopspin(button) {
|
|
button.childNodes[3].classList = "fa fa-arrow-right";
|
|
}
|
|
function buttonSpin(button) {
|
|
spin(document.querySelector("#generate_button_perso"));
|
|
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;
|
|
windowHeight = window.innerHeight;
|
|
var numberColonne1 = 2;
|
|
var numberColonne2 = 1;
|
|
var isEtNonAllowed = false;
|
|
var isOuNonAllowed = false;
|
|
var isNotAllowed = false;
|
|
var isOuAllowed = false;
|
|
double = false;
|
|
var firstTime = [];
|
|
switch (niveauActuel) {
|
|
case 1:
|
|
firstTime.push("et");
|
|
break;
|
|
case 2:
|
|
numberColonne1 = 2;
|
|
numberColonne2 = 0;
|
|
timeEnd = 15;
|
|
break;
|
|
case 3:
|
|
numberColonne1 = 2;
|
|
numberColonne2 = 1;
|
|
timeEnd = 15;
|
|
break;
|
|
case 4:
|
|
numberColonne1 = 3;
|
|
numberColonne2 = 1;
|
|
timeEnd = 20;
|
|
break;
|
|
//Fin premiere serie
|
|
case 5:
|
|
firstTime.push("inv");
|
|
isNotAllowed = true;
|
|
timeEnd = 20;
|
|
break;
|
|
case 6:
|
|
numberColonne1 = 2;
|
|
numberColonne2 = 0;
|
|
isNotAllowed = true;
|
|
timeEnd = 20;
|
|
break;
|
|
case 7:
|
|
numberColonne1 = 2;
|
|
numberColonne2 = 1;
|
|
isNotAllowed = true;
|
|
timeEnd = 20;
|
|
break;
|
|
case 8:
|
|
numberColonne1 = 3;
|
|
numberColonne2 = 1;
|
|
isNotAllowed = true;
|
|
timeEnd = 20;
|
|
break;
|
|
case 9:
|
|
numberColonne1 = 4;
|
|
numberColonne2 = 2;
|
|
isNotAllowed = true;
|
|
double = true;
|
|
timeEnd = 25;
|
|
break;
|
|
case 10:
|
|
firstTime.push("ou");
|
|
break;
|
|
case 11:
|
|
isNotAllowed = true;
|
|
isOuAllowed = true;
|
|
numberColonne1 = 3;
|
|
numberColonne2 = 1;
|
|
timeEnd = 20;
|
|
break;
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
isNotAllowed = true;
|
|
isOuAllowed = true;
|
|
numberColonne1 = 3;
|
|
numberColonne2 = 1;
|
|
timeEnd = 20;
|
|
break;
|
|
default:
|
|
isEtNonAllowed = true;
|
|
isOuNonAllowed = true;
|
|
timeEnd = 20;
|
|
numberColonne1 = 4;
|
|
numberColonne2 = 4;
|
|
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();
|
|
}
|
|
} else {
|
|
for (let i = 0; i < colonneTot; i++) {
|
|
liveColonneNumber.push([]);
|
|
}
|
|
for (let i = 0; i < colonneTot; i++) {
|
|
for (let j = 0; j < numberPerColonne[i]; j++) {
|
|
logiqueCount++;
|
|
let type = null;
|
|
let x = 1;
|
|
if (isOuAllowed) x++;
|
|
if (isEtNonAllowed) x++;
|
|
if (isOuNonAllowed) x++;
|
|
if (isNotAllowed) x++;
|
|
let numberRandom = getRandomArbitrary(0, x);
|
|
switch (numberRandom) {
|
|
case 0:
|
|
type = "et";
|
|
break;
|
|
case 1:
|
|
type = "inv";
|
|
break;
|
|
case 2:
|
|
type = "ou";
|
|
break;
|
|
case 3:
|
|
type = "etnon";
|
|
break;
|
|
case 4:
|
|
type = "nonou";
|
|
break;
|
|
}
|
|
insertLogiqueColonne("logique" + logiqueCount, type, i);
|
|
}
|
|
}
|
|
}
|
|
|
|
logiques.forEach(function (element) {
|
|
createLinkAuto(element.name);
|
|
});
|
|
initEndGame();
|
|
}
|
|
|
|
|
|
function generate2() {
|
|
var matchs = [[3, 2], [2, 2]];
|
|
var fork = [[2, 1], [1, 1]];
|
|
var numberCol = 3;
|
|
var numberPerCol = [5, 3, 2];
|
|
var compt = new Array();
|
|
//attribution
|
|
for (let i = numberCol; i > 0; i--) {
|
|
let num = 1;
|
|
matchs.forEach(function (element) {
|
|
if (element[0] == i) {
|
|
for (let j = 0; j < element[1]; j++) {
|
|
compt.push([i, "same" + num]);
|
|
numberPerCol[i - 1]--;
|
|
}
|
|
num++;
|
|
}
|
|
});
|
|
for (let j = 0; j < numberPerCol[i - 1]; j++)
|
|
compt.push([i, "normal"]);
|
|
}
|
|
|
|
//creation et lien
|
|
var listeLogiqueObj = new Array();
|
|
let i = 0;
|
|
compt.forEach(function (element) {
|
|
if (element[1] === "normal") {
|
|
listeLogiqueObj.push({
|
|
id: "logique" + i,
|
|
col: element[0],
|
|
id1: null,
|
|
id2: null,
|
|
id3: null,
|
|
matchId1: null,
|
|
matchId2: null,
|
|
type: null,
|
|
});
|
|
} else {
|
|
listeLogiqueObj.push({
|
|
id: "logique" + i,
|
|
col: element[0],
|
|
id1: null,
|
|
id2: null,
|
|
id3: null,
|
|
matchId1: element[1],
|
|
matchId2: null,
|
|
type: null,
|
|
});
|
|
}
|
|
i++;
|
|
});
|
|
console.log(listeLogiqueObj);
|
|
}
|
|
|
|
|
|
//a l'epoque
|
|
function generateFromBottom() {
|
|
var NombrecolonneTest = 2;
|
|
var numberPerColonneTest = [3, 2];
|
|
var porteBool = [[true, "et"], [true, "ou"], [true, "inv"]];
|
|
var logiquesTest = [];
|
|
|
|
for (let i = NombrecolonneTest; i > 0; i--) {
|
|
for (let j = 0; j < numberPerColonneTest[i - 1]; j++) {
|
|
let numberRandom = getRandomArbitrary(0, porteBool.length);
|
|
logiquesTest.push([porteBool[numberRandom][1], i, j, (j + 1) * 10]);
|
|
|
|
}
|
|
}
|
|
createLink(logiquesTest, numberPerColonneTest[numberPerColonneTest.length - 1]);
|
|
}
|
|
|
|
function createLinkTest(listeLogique, colonneMax) {
|
|
listeLogique.forEach(function (element) {
|
|
if (element[1] !== colonneMax) {
|
|
console.log(element);
|
|
listeLogique.forEach(function (item) {
|
|
if (item[1] !== colonneMax) {
|
|
console.log(item);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function isValid(listeLogique, colonneMax) {
|
|
listeLogique.forEach(function (element) {
|
|
//derniere colonne donc fin
|
|
if (element[1] == colonneMax) {
|
|
console.log(element);
|
|
}
|
|
});
|
|
} |