pisouvigne 5 years ago
parent 1e8ef28c40
commit f4b477b56e

@ -593,6 +593,60 @@ input[type=color] {
z-index: 80;
}
#warning_perso_message {
display: none;
color: orange;
cursor: help;
margin-right: 5px;
}
.fa-info-circle {
display: none;
cursor: help;
color: orange;
}
.fa-info-circle:hover {
cursor: help;
}
.tooltip {
position: relative;
display: inline-block;
}
#warning_message {
display: flex;
align-items: center;
justify-content: center;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 700px;
background-color: black;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 100%;
left: 50%;
margin-left: -350px;
margin-bottom: -15px;
/* Fade in tooltip - takes 1 second to go from 0% to 100% opac: */
opacity: 0;
transition: 0.2s;
}
.tooltip:hover .tooltiptext {
margin-bottom: 0px;
visibility: visible;
opacity: 1;
}
@keyframes progressbar-countdown {
0% {
width: 0%;

@ -71,6 +71,17 @@
<br>
<p class="dys" id="error_perso"></p>
<br>
<div class="dys" id="warning_perso">
<div class="tooltip">
<span class="tooltiptext">Le générateur génère aléatoirement un chemin ainsi que des portes, toute
les portes sauf la porte NON ont 2 entrées, il y a donc une possibilité pour que l'aléatoire
décide de mettre des portes NON, et donc une seul entrée. Si c'est le cas, il se peut qu'il y
est trop de fork, le générateur peut donc se permettre d'ajouter une porte si besoin.</span>
<p id="warning_message"><a id="warning_perso_message">Problèmes possible lors de la génération </a>
<i class="fa fa-info-circle" aria-hidden="true"></i></p>
</div>
</div>
<div class="border background dys listenerHover" id="generate_button_perso"
onclick="buttonSpin(this,'gen')">
<a>Générer le niveau</a>
@ -263,6 +274,64 @@
</div>
</div>
</div>
<div id="firstTimenonou" class="modal">
<div class="modal-content info-content">
<div class="modal-body border background" align=center>
<span class="close" onclick="closeModal('firstTimenonou');demarrerTimer();">&times;</span>
<h1 class="txt dys" id="infoFirstTimenonou"></h1>
<hr id="hr">
<p class="dys txt margin-global" id="infoFirstTimenonouInfo1"></p>
<table class="veriteTable dys">
<tr>
<th class="border">a</th>
<th class="border">S</th>
</tr>
<tr class="veri_true">
<td class="border">0</td>
<td class="border">1</td>
</tr>
<tr class="veri_false">
<td class="border">1</td>
<td class="border">0</td>
</tr>
</table>
<br><br>
<p><img src="img/txt_en/nor.png" class="margin-right"><img src="img/sym/nor.png"></p>
<br><br>
<p class="dys info_check" align=right><a class="txt" id="close_helps"></a><input type="checkbox"
id="info_check_input" onclick="showInfo();"></p>
</div>
</div>
</div>
<div id="firstTimenand" class="modal">
<div class="modal-content info-content">
<div class="modal-body border background" align=center>
<span class="close" onclick="closeModal('firstTimenand');demarrerTimer();">&times;</span>
<h1 class="txt dys" id="infoFirstTimenand"></h1>
<hr id="hr">
<p class="dys txt margin-global" id="infoFirstTimenandInfo1"></p>
<table class="veriteTable dys">
<tr>
<th class="border">a</th>
<th class="border">S</th>
</tr>
<tr class="veri_true">
<td class="border">0</td>
<td class="border">1</td>
</tr>
<tr class="veri_false">
<td class="border">1</td>
<td class="border">0</td>
</tr>
</table>
<br><br>
<p><img src="img/txt_en/nand.png" class="margin-right"><img src="img/sym/nand.png"></p>
<br><br>
<p class="dys info_check" align=right><a class="txt" id="close_helps"></a><input type="checkbox"
id="info_check_input" onclick="showInfo();"></p>
</div>
</div>
</div>
<div class="menu border">
<div class="header_play">
<a onclick="closeGame();"><i class="fa fa-home home" aria-hidden="true"></i></a>

@ -36,7 +36,7 @@ function createGame2() {
timeEnd = 40;
colonneTot = 3;
numberPerColonne = [1,1,3];
numberPerColonne = [1, 1, 3];
initTimer();
@ -58,10 +58,11 @@ function createGame2() {
initEnd();
}
function tuto(){
function tuto() {
timeEnd = 1000;
initTimer();
setMode("Tuto");
var logiqueCount = 0;
@ -90,7 +91,7 @@ function tuto(){
initEnd();
}
function creatorRandomPyramid(){
function creatorRandomPyramid() {
timeEnd = getRandomArbitrary(15, 50);
initTimer();
@ -100,7 +101,7 @@ function creatorRandomPyramid(){
let still = premiereColonne;
let nmbColonne = 1;
while(still != 1){
while (still != 1) {
still = still / 2;
nmbColonne++;
}

@ -467,8 +467,6 @@ function invertLine() {
distance2 = getSwitchFromLine(logique.id2).y;
else distance2 = getLogiqueFromLine(logique.id2).y;
if (distance2 < distance1) {
console.log("croisement pour " + logique.name + " " + logique.type);
if (getLogiqueFromLine(logique.id1) === null && getLogiqueFromLine(logique.id2) === null) {
let switch1Id = getSwitchFromLine(logique.id1).id;
let switch2Id = getSwitchFromLine(logique.id2).id;
@ -808,6 +806,18 @@ function ErrorMessage(message) {
document.querySelector("#error_perso").innerHTML = message;
}
function WarningMessage(message) {
if (message === "") {
document.querySelector("#warning_perso_message").style.display = "none";
document.querySelector(".fa-info-circle").style.display = "none";
} else {
document.querySelector("#warning_perso_message").innerHTML = message;
document.querySelector("#warning_perso_message").style.display = "block";
document.querySelector(".fa-info-circle").style.display = "block";
}
}
function wait(mode, btn) {
var time = 300;
spin(btn);
@ -892,6 +902,16 @@ function launchTuto() {
timer.reset();
resetAllTabs(false);
tuto();
while (checkIfEnd()) {
resetAllTabs(false);
tuto();
}
}
function setMode(mode) {
document.querySelector("#modeDeJeu").innerHTML = mode;
}
function launchTest() {

@ -148,9 +148,10 @@ function calcul(launch) {
var count = [];
for (let i = 0; i < col.length; i++) count[i] = 0;
var error = null;
var warning = null;
document.querySelectorAll(".div_gen_col_fork").forEach(function (element) {
element.childNodes[0].innerHTML = "Ajouter un fork pour la colonne " + element.childNodes[1].value + " qui se divise en " + element.childNodes[2].value;
element.childNodes[0].innerHTML = "Ajouter un fork pour la colonne " + element.childNodes[1].value + " qui se divise en " + element.childNodes[2].value + " ";
count[(parseInt(element.childNodes[1].value) - 1)] = count[(parseInt(element.childNodes[1].value) - 1)] + parseInt(element.childNodes[2].value);
matchs.push([(parseInt(element.childNodes[1].value) + 1), parseInt(element.childNodes[2].value)]);
fork.push([parseInt(element.childNodes[1].value), parseInt(element.childNodes[2].value)]);
@ -160,15 +161,40 @@ function calcul(launch) {
} else {
element.childNodes[1].style.borderColor = "white";
}
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[count[(parseInt(element.childNodes[1].value) - 1)]]) {
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value)] * 2 || count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value) - 1]) {
error = "Problème nombre de porte dans la colonne";
element.childNodes[2].style.borderColor = "red";
} else {
element.childNodes[2].style.borderColor = "white";
}
//calcul des erreur de sorties/entrees potentiels :
if (count[(parseInt(element.childNodes[1].value) - 1)] > col[parseInt(element.childNodes[1].value)])
warning = "Problèmes possible lors de la génération ";
if (element.childNodes[1].value === "" || element.childNodes[1].value === null || element.childNodes[1].value === undefined || element.childNodes[2].value === "" || element.childNodes[2].value === null || element.childNodes[2].value === undefined)
error = "Element(s) vide";
});
if (error !== null) ErrorMessage(error);
if (launch !== undefined && launch !== null && launch === true) {
if (error !== null) {
ErrorMessage(error);
stopspin(document.querySelector("#generate_button_perso"));
document.querySelector("#generate_button_perso").addEventListener('mouseenter', e => {
document.querySelector("#generate_button_perso").style.cursor = 'not-allowed';
});
document.querySelector("#generate_button_perso").addEventListener('mouseleave', e => {
document.querySelector("#generate_button_perso").style.cursor = 'default';
});
} else {
ErrorMessage("");
document.querySelector("#generate_button_perso").addEventListener('mouseenter', e => {
document.querySelector("#generate_button_perso").style.cursor = 'pointer';
});
document.querySelector("#generate_button_perso").addEventListener('mouseleave', e => {
document.querySelector("#generate_button_perso").style.cursor = 'default';
});
}
if (warning)
WarningMessage(warning)
else WarningMessage("");
if (launch !== undefined && launch !== null && launch === true && error === null) {
generate2(col, matchs, fork);
}
}
@ -197,6 +223,7 @@ function addGenForkInput() {
i.className = "fa fa-trash";
i.onclick = function () {
this.parentElement.remove();
calcul();
}
div.append(i);
document.querySelector("#gen_fork_div").appendChild(div);
@ -204,6 +231,7 @@ function addGenForkInput() {
}
function tuto(niveau) {
setMode("Tuto");
windowWidth = window.innerWidth;
windowHeight = window.innerHeight;
var numberColonne1 = 2;
@ -443,42 +471,50 @@ function generate2(col, matchs, fork) {
compt.push([i, "normal"]);
}
//creation et lien
//attribution groupe
var listeLogiqueObj = new Array();
let i = 0;
let colTemp = col;
compt.forEach(function (element) {
if (element[1] === "normal") {
listeLogiqueObj.push({
if (colTemp[element[0] - 1] !== 0) {
var newLogiqueObj = {
id: "logique" + i,
col: element[0],
id1: null,
id2: null,
id3: null,
matchId1: null,
matchId2: null,
type: null,
});
}
if (element[1] === "normal") {
newLogiqueObj.matchId1 = null;
} else {
listeLogiqueObj.push({
id: "logique" + i,
col: element[0],
id1: null,
id2: null,
id3: null,
matchId1: element[1],
type: null,
newLogiqueObj.matchId1 = element[1];
}
listeLogiqueObj.push(newLogiqueObj);
colTemp[element[0] - 1]--;
} else {
var allowed = [];
listeLogiqueObj.forEach(function (logique) {
if (logique.col === element[0] && logique.same !== element[1])
allowed.push(logique);
});
allowed[getRandomArbitrary(0, allowed.length)].matchId2 = element[1];
}
i++;
});
console.log(listeLogiqueObj);
//Attribution des types
//num = liste de comptatibilité
let num2 = getRandomArbitrary(0, 3);
let num2 = getRandomArbitrary(0, 5);
for (x in compt) {
if (listeLogiqueObj[x].matchId1 !== null) {
if (getElementArray(listeLogiqueObj[x].matchId1, listeSame)[1] === null) {
getElementArray(listeLogiqueObj[x].matchId1, listeSame)[1] = num2;
num2 = getRandomArbitrary(0, 3);
num2 = getRandomArbitrary(0, 5);
} else {
listeSame[x] = getElementArray(listeLogiqueObj[x].matchId1, listeSame);
}
@ -486,15 +522,22 @@ function generate2(col, matchs, fork) {
}
createStage("play_container");
stage.add(layer);
timeEnd = 1000;
timeEnd = 999;
for (let i = 0; i < colonneTot; i++) {
liveColonneNumber.push([]);
}
var col = [];
listeLogiqueObj.forEach(function (logique) {
if (col[logique.col - 1] === null || col[logique.col - 1] === undefined || col[logique.col - 1] === 0)
col[logique.col - 1] = 1;
else col[logique.col - 1]++;
});
numberPerColonne = col;
initTimer();
//creation logique
listeLogiqueObj.forEach(function (logique) {
if (getTypeFromSameMatch(listeSame, logique.matchId1) === null) logique.type = getRandomArbitrary(0, 3);
if (getTypeFromSameMatch(listeSame, logique.matchId1) === null) logique.type = getRandomArbitrary(0, 5);
else logique.type = getTypeFromSameMatch(listeSame, logique.matchId1);
switch (logique.type) {
case 0:
@ -506,8 +549,15 @@ function generate2(col, matchs, fork) {
case 2:
insertLogiqueColonne(logique.id, "inv", logique.col - 1);
break;
case 3:
insertLogiqueColonne(logique.id, "nonou", logique.col - 1);
break;
case 4:
insertLogiqueColonne(logique.id, "etnon", logique.col - 1);
break;
}
});
var logiquesGen;
//creation de liens entre les portes logiques :
for (let col = 1; col < colonneTot; col++) {

@ -34,6 +34,11 @@ function compareLogiqueForEnd(a, b) {
return -1;
if (a.y < b.y)
return 1;
if (a.y == b.y) {
if (a.x > b.x)
return -1;
else return 1;
}
return 0;
}

@ -60,6 +60,7 @@ function resetAllTabs(save) {
if (!save) {
circles = [];
logiques = [];
click = 0;
numberPerColonne = [];
liveColonneNumber = [];

Loading…
Cancel
Save