pisouvigne 5 years ago
parent 82c784dedd
commit 46082332cc

@ -23,6 +23,8 @@ body {
margin-left: 25px; margin-left: 25px;
} }
#containerVanilla { #containerVanilla {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -43,6 +45,19 @@ body {
justify-content: center; justify-content: center;
} }
#selectionNormalContainer {
height: 95%;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
}
.scoreContainer {
height: 80%;
margin: 2%;
}
html { html {
height: 100%; height: 100%;
margin: 0; margin: 0;
@ -730,3 +745,27 @@ input[type=color] {
width: 10%; width: 10%;
margin-left: 10px; margin-left: 10px;
} }
#PseudoChanger {
display: none;
align-items: center;
justify-content: center;
width: 70%;
padding-top: 20px;
padding-bottom: 20px;
}
.fa-save {
font-size: 2em;
margin-left: 25px;
color: var(--cool-color);
}
.fa-database {
font-size: 2em;
margin-left: 25px;
}
#pseudoInput {
height: 2em;
}

@ -0,0 +1,17 @@
<?php
require('db.php');
$newPseudo = $_REQUEST["newPseudo"];
$oldPseudo = $_REQUEST["oldPseudo"];
$req = $db->prepare("UPDATE scores SET pseudo=:newPseudo WHERE pseudo=:oldPseudo");
$req->bindValue(':newPseudo', $newPseudo, SQLITE3_TEXT);
$req->bindValue(':oldPseudo', $oldPseudo, SQLITE3_TEXT);
$req->execute();
$req = $db->prepare("UPDATE pseudos SET pseudo=:newPseudo WHERE pseudo=:oldPseudo");
$req->bindValue(':newPseudo', $newPseudo, SQLITE3_TEXT);
$req->bindValue(':oldPseudo', $oldPseudo, SQLITE3_TEXT);
$req->execute();

@ -0,0 +1,16 @@
<?php
require('db.php');
$pseudo = $_REQUEST["pseudo"];
//On check si le pseudo existe déjà
$req = $db->prepare('SELECT pseudo FROM pseudos WHERE pseudo = :pseudo');
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$results = $req->execute();
if ($results->fetchArray()[0] == null) {
echo "0";
} else {
echo "1";
}

@ -0,0 +1,13 @@
<?php
class Db extends SQLite3
{
function __construct()
{
$this->open('makeittrue.db');
}
}
$db = new Db();
?>

@ -0,0 +1,13 @@
<?php
require('db.php');
$mode = $_REQUEST["mode"];
$req = $db->prepare('SELECT pseudo,score FROM scores WHERE mode = :mode ORDER BY score DESC ');
$req->bindValue(':mode', $mode, SQLITE3_TEXT);
$results = $req->execute();
$i = 1;
while ($row = $results->fetchArray()) {
echo $i . " : " . $row['pseudo'] . " | " . $row['score'] . "<br>";
$i = $i + 1;
}

@ -0,0 +1,16 @@
<?php
require('db.php');
$pseudo = $_REQUEST["pseudo"];
$req = $db->prepare("SELECT * FROM pseudos WHERE pseudo=:pseudo");
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$results = $req->execute();
if ($results->fetchArray()[0] == null) {
$req = $db->prepare("INSERT INTO pseudos (pseudo) VALUES (:pseudo) ");
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$req->execute();
}

@ -0,0 +1,41 @@
<?php
require('db.php');
$pseudo = $_REQUEST["pseudo"];
$mode = $_REQUEST["mode"];
$temps = $_REQUEST["temps"];
$clicks = $_REQUEST["clicks"];
$score = $_REQUEST["score"];
//On va chercher l'ancien score
$req = $db->prepare('SELECT score FROM scores WHERE pseudo = :pseudo AND mode = :mode');
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$req->bindValue(':mode', $mode, SQLITE3_TEXT);
$results = $req->execute();
if ($results->fetchArray()[0] == null) {
$req = $db->prepare('INSERT INTO scores(pseudo,mode,temps,clicks,score) VALUES(:pseudo,:mode,:temps,:clicks,:score)');
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$req->bindValue(':mode', $mode, SQLITE3_TEXT);
$req->bindValue(':temps', $temps, SQLITE3_FLOAT);
$req->bindValue(':clicks', $clicks, SQLITE3_INTEGER);
$req->bindValue(':score', $score, SQLITE3_FLOAT);
$req->execute();
} else {
if (floatval($results->fetchArray()[0]) < floatval($score)) {
$req = $db->prepare("UPDATE scores SET score=:score, clicks=:clicks,temps=:temps WHERE pseudo=:pseudo AND mode=:mode");
$req->bindValue(':pseudo', $pseudo, SQLITE3_TEXT);
$req->bindValue(':mode', $mode, SQLITE3_TEXT);
$req->bindValue(':temps', $temps, SQLITE3_FLOAT);
$req->bindValue(':clicks', $clicks, SQLITE3_INTEGER);
$req->bindValue(':score', $score, SQLITE3_FLOAT);
$req->execute();
}
}
?>

Binary file not shown.

@ -42,13 +42,28 @@
</div> </div>
</div> </div>
<!-- Vanilla Selection --> <!-- Vanilla Selection -->
<div id="scoreModal" class="modal">
<div class="modal-content score-content">
<div class="modal-body border background">
<span class="close" onclick="closeModal('scoreModal')">&times;</span>
<h1 align=center class="txt dys" id="scoreTitle">Tableau des scores</h1>
<hr id="hr">
<div class="scoreContainer border" align=center>
<p class="dys txt" id="mode2"></p>
<hr id="hr">
<p class="dys" id="scoreHere"></p>
</div>
</div>
</div>
</div>
<div id="VanillalevelSelectionPage" class="background"> <div id="VanillalevelSelectionPage" class="background">
<div id="header_selection" align=center> <div id="header_selection" align=center>
<i class="fa fa-arrow-left home" onclick="goToSelection(this);" aria-hidden="true"></i> <i class="fa fa-arrow-left home" onclick="goToSelection(this);" aria-hidden="true"></i>
<h1 class="dys txt" id="title_selection">Vanilla</h1> <h1 class="dys" id="title_selection_2"></h1>
<label></label> <label></label>
</div> </div>
<hr id="hr"> <hr id=" hr">
<div id="selectionVanillaContainer"> <div id="selectionVanillaContainer">
<div id="containerVanilla"> <div id="containerVanilla">
<div class="border background dys listenerHover vanillaElement" onclick="wait('vanillaFacile', this)"> <div class="border background dys listenerHover vanillaElement" onclick="wait('vanillaFacile', this)">
@ -56,7 +71,7 @@
<i class="fa fa-play" aria-hidden="true"></i> <i class="fa fa-play" aria-hidden="true"></i>
</div> </div>
<div class="border background dys listenerHover vanillaElement scoreElement" <div class="border background dys listenerHover vanillaElement scoreElement"
onclick="wait('tuto', this)"> onclick="leaderboard('vanillaFacile', this)">
<a></a> <a></a>
<i class="fa fa-trophy" aria-hidden="true"></i> <i class="fa fa-trophy" aria-hidden="true"></i>
</div> </div>
@ -68,7 +83,7 @@
<i class="fa fa-play" aria-hidden="true"></i> <i class="fa fa-play" aria-hidden="true"></i>
</div> </div>
<div class="border background dys listenerHover vanillaElement scoreElement" <div class="border background dys listenerHover vanillaElement scoreElement"
onclick="wait('tuto', this)"> onclick="leaderboard('vanillaMoyen', this)">
<a></a> <a></a>
<i class="fa fa-trophy" aria-hidden="true"></i> <i class="fa fa-trophy" aria-hidden="true"></i>
</div> </div>
@ -80,7 +95,7 @@
<i class="fa fa-play" aria-hidden="true"></i> <i class="fa fa-play" aria-hidden="true"></i>
</div> </div>
<div class="border background dys listenerHover vanillaElement scoreElement" <div class="border background dys listenerHover vanillaElement scoreElement"
onclick="wait('tuto', this)"> onclick="leaderboard('vanillaImpossible', this)">
<a></a> <a></a>
<i class="fa fa-trophy" aria-hidden="true"></i> <i class="fa fa-trophy" aria-hidden="true"></i>
</div> </div>
@ -91,7 +106,55 @@
<i class="fa fa-play" aria-hidden="true"></i> <i class="fa fa-play" aria-hidden="true"></i>
</div> </div>
<div class="border background dys listenerHover vanillaElement scoreElement" <div class="border background dys listenerHover vanillaElement scoreElement"
onclick="wait('tuto', this)"> onclick="leaderboard('vanilla', this)">
<a></a>
<i class="fa fa-trophy" aria-hidden="true"></i>
</div>
</div>
</div>
<div id="selectionNormalContainer">
<div id="containerVanilla">
<div class="border background dys listenerHover vanillaElement" onclick="wait('normalFacile', this)">
<a>Facile</a>
<i class="fa fa-play" aria-hidden="true"></i>
</div>
<div class="border background dys listenerHover vanillaElement scoreElement"
onclick="leaderboard('normalFacile', this)">
<a></a>
<i class="fa fa-trophy" aria-hidden="true"></i>
</div>
</div>
<div id="containerVanilla">
<div class="border background dys listenerHover vanillaElement" onclick="wait('normalMoyen', this)">
<a>Moyen</a>
<i class="fa fa-play" aria-hidden="true"></i>
</div>
<div class="border background dys listenerHover vanillaElement scoreElement"
onclick="leaderboard('normalMoyen', this)">
<a></a>
<i class="fa fa-trophy" aria-hidden="true"></i>
</div>
</div>
<div id="containerVanilla">
<div class="border background dys listenerHover vanillaElement"
onclick="wait('normalImpossible', this)">
<a>Impossible</a>
<i class="fa fa-play" aria-hidden="true"></i>
</div>
<div class="border background dys listenerHover vanillaElement scoreElement"
onclick="leaderboard('normalImpossible', this)">
<a></a>
<i class="fa fa-trophy" aria-hidden="true"></i>
</div>
</div>
<div id="containerVanilla">
<div class="border background dys listenerHover vanillaElement" onclick="wait('normalInfini', this)">
<a>Mode Infini</a>
<i class="fa fa-play" aria-hidden="true"></i>
</div>
<div class="border background dys listenerHover vanillaElement scoreElement"
onclick="leaderboard('normal', this)">
<a></a> <a></a>
<i class="fa fa-trophy" aria-hidden="true"></i> <i class="fa fa-trophy" aria-hidden="true"></i>
</div> </div>
@ -99,6 +162,7 @@
</div> </div>
</div> </div>
<!--Test Generateur--> <!--Test Generateur-->
<div id="TestNouveauGenerateur" class="background"> <div id="TestNouveauGenerateur" class="background">
<div id="header_selection" align=center> <div id="header_selection" align=center>
@ -149,11 +213,14 @@
<br> <br>
<div class="dys" id="warning_perso"> <div class="dys" id="warning_perso">
<div class="tooltip"> <div class="tooltip">
<span class="tooltiptext">Le générateur génère aléatoirement un chemin ainsi que des portes, toute <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 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 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> 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> <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> <i class="fa fa-info-circle" aria-hidden="true"></i></p>
</div> </div>
@ -472,8 +539,12 @@
<p class="dys"> <p class="dys">
<a>Pseudo : </a> <a>Pseudo : </a>
<a id="pseudo_show"></a> <a id="pseudo_show"></a>
<i class="fa fa-edit" aria-hidden="true"></i> <i class="fa fa-edit" aria-hidden="true" onclick="openChangeInput()"></i>
</p> </p>
<div id="PseudoChanger" class="border background">
<input type="text" id="pseudoInput" value="pseudo">
<i class="fa fa-save" id="saveIco" aria-hidden="true" onclick="tryChangePseudo()"></i>
</div>
<br> <br>
<br><img onclick="setLang('fr')" class="img_france" src="img/france.png" /> <br><img onclick="setLang('fr')" class="img_france" src="img/france.png" />
<img onclick="setLang('en')" class="img_usa" src="img/usa.png" /><br><br><br> <img onclick="setLang('en')" class="img_usa" src="img/usa.png" /><br><br><br>
@ -534,31 +605,7 @@
</div> </div>
</div> </div>
<div id="scoreModal" class="modal">
<div class="modal-content score-content">
<div class="modal-body border background">
<span class="close" onclick="closeModal('scoreModal')">&times;</span>
<h1 align=center class="txt dys" id="scoreTitle">Tableau des scores</h1>
<hr id="hr">
<div class="scoreOne border" align=center>
<p class="dys txt" id="mode1">Vanilla</p>
<hr id="hr">
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
</div>
<div class="scoreTwo border" align=center>
<p class="dys txt" id="mode2">Normal</p>
<hr id="hr">
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
<p class="dys">Pseudo | Score</p>
</div>
</div>
</div>
</div>
<div id="gameOver" class="modal"> <div id="gameOver" class="modal">
<div class="modal-content score-content"> <div class="modal-content score-content">
<div class="modal-body border background"> <div class="modal-body border background">
@ -567,21 +614,11 @@
<hr id="hr"> <hr id="hr">
<br><br> <br><br>
<div align=center> <div align=center>
<p><a class="dys">Vous avez fait un score total de </a><a class="dys" <p><a class="dys"></a><a class="dys" id="scoreTotGameOver"></a></p>
id="scoreTotGameOver">140</a></p> <p class="dys"><a class="dys"></a><a class="dys" id="TempsTotGameOver"></a></p>
<p class="dys"><a class="dys">Vous avez fait un temps total de </a><a class="dys"
id="TempsTotGameOver">40</a> s</p>
<p><a class="dys">Niveau max : </a><a class="dys" id="niveauGameOver"></a></p> <p><a class="dys">Niveau max : </a><a class="dys" id="niveauGameOver"></a></p>
<hr id="hr">
<br>
<p><i class="fa fa-star" id="star1" aria-hidden="true"></i>
<i class="fa fa-star" id="star2" aria-hidden="true"></i>
<i class="fa fa-star" id="star3" aria-hidden="true"></i>
<i class="fa fa-star" id="star4" aria-hidden="true"></i>
<i class="fa fa-star" id="star5" aria-hidden="true"></i></p>
</div> </div>
<hr id="hr">
</div> </div>
</div> </div>
</div> </div>
@ -678,7 +715,6 @@
</div> </div>
</div> </div>
</body> </body>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<script src="https://unpkg.com/konva@6.0.0/konva.min.js"></script> <script src="https://unpkg.com/konva@6.0.0/konva.min.js"></script>
<script src="js/const.js"></script> <script src="js/const.js"></script>
<script src="js/lang.js"></script> <script src="js/lang.js"></script>
@ -693,12 +729,9 @@
<script src="js/timer.js"></script> <script src="js/timer.js"></script>
<script src="js/db.js"></script> <script src="js/db.js"></script>
<script src="js/generateGame.js"></script> <script src="js/generateGame.js"></script>
<script src="js/sql.js"></script>
<script> <script>
isPseudoOk("pierre");
getTest();
initAll(); initAll();
</script> </script>

@ -53,19 +53,19 @@ var isTutoriel = false;
var windowWidth = 0; var windowWidth = 0;
var windowHeight = 0; var windowHeight = 0;
var modeG = null;
var mobile = false; var mobile = false;
var allowedInfoPorte = true; var allowedInfoPorte = true;
var double = false; var double = false;
var click = 0, perfectClick = 0; var click = 0, perfectClick = 0, clickTot = 0;
var successPanel = true; var successPanel = true;
var arrayPorte = []; var arrayPorte = [];
var pseudo = null;
const NOMBRETEST = 500; const NOMBRETEST = 500;
var isFinish = false;
var tempCol = [], tempMatchs = [], tempFork = [], tempPortes = [], changePorte = []; var tempCol = [], tempMode = null, tempLinks = [], tempPortes = [], changePorte = [], tempCircles = [];

@ -79,14 +79,18 @@ function createLine(points, id, end) {
endY = points[3]; endY = points[3];
var newPoints; var newPoints;
if (end != undefined && end != null && end === true) { if (end != undefined && end != null && end === true) {
let distance20 = (endX - startX) / 100 * 5; let distance20 = 12;
let distance80 = (endX - startX) / 100 * 90; let distance80 = (endX - startX) / 100 * 90;
newPoints = [startX, startY, startX + distance80, startY, endX - distance20, endY, endX, endY]; if (endX - startX < stage.width() / 2.5)
newPoints = [startX, startY, endX, endY];
else
newPoints = [startX, startY, startX + distance80, startY, endX - distance20, endY, endX, endY];
} else if (end != undefined && end != null && end === false) { } else if (end != undefined && end != null && end === false) {
let distance20 = (endX - startX) / 100 * 10; let distance20 = (endX - startX) / 100 * 10;
let distance80 = (endX - startX) / 100 * 80; let distance80 = (endX - startX) / 100 * 80;
newPoints = [startX, startY, startX + distance80, startY, endX - distance20, endY, endX, endY]; newPoints = [startX, startY, startX + distance80, startY, endX - distance20, endY, endX, endY];
} else { } else {
let distance20 = (endX - startX) / 100 * pourcentageBreak; let distance20 = (endX - startX) / 100 * pourcentageBreak;
newPoints = [startX, startY, startX + distance20, startY, endX - distance20, endY, endX, endY]; newPoints = [startX, startY, startX + distance20, startY, endX - distance20, endY, endX, endY];
} }

@ -1,19 +1,61 @@
function getTest() { function getScore(mode) {
var contents; let xhr = new XMLHttpRequest();
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () {
xhr.open('GET', 'database/makeittrue.db', true); if (this.readyState === 4 && this.status === 200) {
xhr.responseType = 'arraybuffer'; document.querySelector("#mode2").innerHTML = mode;
document.querySelector("#scoreHere").innerHTML = this.responseText;
}
};
xhr.open("GET", "database/getScore.php?mode=" + mode, true);
xhr.send();
}
function changePseudo(nouveauPseudo, oldPseudo) {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
console.log(this.responseText);
}
};
xhr.open("GET", "database/changeName.php?newPseudo=" + nouveauPseudo + "&oldPseudo=" + oldPseudo, true);
xhr.send();
}
function isPseudoOk(pseudo, change) {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
if (parseInt(this.responseText) === 0) {
setPseudoOk(pseudo, change);
}
else {
setPseudoNotOk();
}
}
};
xhr.open("GET", "database/checkPseudo.php?pseudo=" + pseudo, true);
xhr.send();
}
function insertName(pseudo) {
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
console.log(this.responseText);
}
};
xhr.open("GET", "database/insertPseudo.php?pseudo=" + pseudo, true);
xhr.send();
}
xhr.onload = function (e) { function sendScore(score, mode, clicks, time) {
var uInt8Array = new Uint8Array(this.response); let xhr = new XMLHttpRequest();
var db = new SQL.Database(uInt8Array); console.log(pseudo)
var contents = db.exec("SELECT * FROM scores WHERE mode = 'normal'"); xhr.onreadystatechange = function () {
contents.forEach(function (element) { if (this.readyState === 4 && this.status === 200) {
element.values.forEach(function (value) { }
console.log(value)
});
});
}; };
xhr.open("GET", "database/insertScore.php?mode=" + mode + "&pseudo=" + pseudo + "&clicks=" + clicks + "&temps=" + time + "&score=" + score, true);
xhr.send(); xhr.send();
} }

@ -1,8 +1,40 @@
function openModal(modalId) { function openModal(modalId) {
var modal = document.getElementById(modalId); var modal = document.getElementById(modalId);
modal.style.display = "block"; modal.style.display = "block";
}
function tryChangePseudo() {
isPseudoOk(document.querySelector("#pseudoInput").value, true);
}
function setPseudoOk(newPseudo, change) {
document.querySelector("#saveIco").className = "fa fa-save";
document.querySelector("#saveIco").style.color = "green";
if (change) {
changePseudo(newPseudo, pseudo);
pseudo = newPseudo;
document.querySelector("#pseudo_show").innerHTML = newPseudo;
localStorage.setItem("pseudo", newPseudo);
}
}
function setPseudoNotOk() {
document.querySelector("#saveIco").className = "fa fa-save";
document.querySelector("#saveIco").style.color = "#fe8a71";
}
document.querySelector("#pseudoInput").addEventListener('input', (event) => {
document.querySelector("#saveIco").className = "fa fa-database dys";
isPseudoOk(document.querySelector("#pseudoInput").value, false);
});
function openChangeInput() {
if (document.querySelector("#PseudoChanger").style.display !== "flex") {
document.querySelector("#PseudoChanger").style.display = "flex";
}
else
document.querySelector("#PseudoChanger").style.display = "none";
} }
function closeModal(modal) { function closeModal(modal) {
@ -632,7 +664,7 @@ function checkEnd(mode) {
} }
function success(mode) { function success(mode) {
console.log(mode) modeG = mode;
timeTot = timeTot + timer.getTimeValues().seconds; timeTot = timeTot + timer.getTimeValues().seconds;
timer.stop(); timer.stop();
stage.findOne("#end").fill(colorSwitchActiveBackground); stage.findOne("#end").fill(colorSwitchActiveBackground);
@ -647,13 +679,40 @@ function success(mode) {
document.querySelector(".retry_tuto").style.display = "none"; document.querySelector(".retry_tuto").style.display = "none";
} }
if (successPanel) { if (successPanel) {
document.querySelector("#win_pannel").style.display = "block"; if (isFinish) {
//openModal("success"); showDiv(document.querySelector("#mainPage"));
document.querySelector("#click_number").innerHTML = click; hideDiv(document.querySelector("#playPage"));
document.querySelector("#next_level_button").onclick = function () {
//closeModal('success'); openModal("gameOver");
nextLevel(mode); switch (mode) {
case "vanillaFacile":
document.querySelector("#gameOverTitle").innerHTML = 'Vanilla Facile';
break;
default:
document.querySelector("#gameOverTitle").innerHTML = mode;
break;
}
clickTot = clickTot + click;
var scoreTot
if (niveauActuel === 1)
scoreTot = 0;
else
scoreTot = ((1 / timeTot) * (1 / clickTot) * 1000).toFixed(2);
document.querySelector("#scoreTotGameOver").innerHTML = "Score : " + scoreTot;
document.querySelector("#niveauGameOver").innerHTML = niveauActuel;
document.querySelector("#TempsTotGameOver").innerHTML = "Temps : " + timeTot;
sendScore(scoreTot, mode, clickTot, niveauActuel, 25, timeTot);
clickTot = 0;
} else {
document.querySelector("#win_pannel").style.display = "block";
//openModal("success");
document.querySelector("#click_number").innerHTML = click;
document.querySelector("#next_level_button").onclick = function () {
//closeModal('success');
nextLevel(mode);
}
} }
/*var previewStage = new Konva.Stage({ /*var previewStage = new Konva.Stage({
container: 'show_stage', container: 'show_stage',
width: window.innerWidth / 1.5, width: window.innerWidth / 1.5,
@ -684,12 +743,19 @@ function nextLevel(mode) {
launchTuto(); launchTuto();
} else if (mode === "vanilla" || mode === "normal") { } else if (mode === "vanilla" || mode === "normal") {
launchGameOne(mode); launchGameOne(mode);
} else if (mode === "vanillaFacile") { } else if (mode === "vanillaFacile" || mode === "normalFacile") {
launchFacileGameOne(mode); launchFacileGameOne(mode);
} else if (mode === "vanillaMoyen" || mode === "normalMoyen") {
launchMoyenGameOne(mode);
} else if (mode === "vanillaImpossible" || mode === "normalImpossible") {
launchImpossibleGameOne(mode);
} }
} }
function leaderboard(mode, btn) {
openModal('scoreModal');
getScore(mode);
}
function resize() { function resize() {
stage.scale({ stage.scale({
@ -812,7 +878,7 @@ function modePerso() {
} }
function playNormal() { function playNormal() {
hideDiv(document.querySelector("#levelSelectionPage")); hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage")); showDiv(document.querySelector("#playPage"));
niveauActuel = 1; niveauActuel = 1;
timeTot = 0; timeTot = 0;
@ -825,6 +891,21 @@ function goToSelection(btn) {
} }
function vanillaSelection() { function vanillaSelection() {
document.querySelector("#title_selection_2").innerHTML = "Vanilla";
document.querySelector("#selectionNormalContainer").style.display = "none";
document.querySelector("#selectionVanillaContainer").style.display = "flex";
hideDiv(document.querySelector("#levelSelectionPage"));
showDiv(document.querySelector("#VanillalevelSelectionPage"));
document.querySelectorAll(".vanillaElement").forEach(function (element) {
if (element.children[0].innerHTML !== "")
element.children[1].className = "fa fa-play";
});
}
function normalSelection() {
document.querySelector("#title_selection_2").innerHTML = "Normal";
document.querySelector("#selectionVanillaContainer").style.display = "none";
document.querySelector("#selectionNormalContainer").style.display = "flex";
hideDiv(document.querySelector("#levelSelectionPage")); hideDiv(document.querySelector("#levelSelectionPage"));
showDiv(document.querySelector("#VanillalevelSelectionPage")); showDiv(document.querySelector("#VanillalevelSelectionPage"));
document.querySelectorAll(".vanillaElement").forEach(function (element) { document.querySelectorAll(".vanillaElement").forEach(function (element) {
@ -847,6 +928,45 @@ function playFacileVanilla() {
timeTot = 0; timeTot = 0;
launchFacileGameOne("vanillaFacile"); launchFacileGameOne("vanillaFacile");
} }
function playImpossibleVanilla() {
hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage"));
niveauActuel = 1;
timeTot = 0;
launchImpossibleGameOne("vanillaImpossible");
}
function playMoyenVanilla() {
hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage"));
niveauActuel = 1;
timeTot = 0;
launchMoyenGameOne("vanillaMoyen");
}
//normal
function playFacileNormal() {
hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage"));
niveauActuel = 1;
timeTot = 0;
launchFacileGameOne("normalFacile");
}
function playImpossibleNormal() {
hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage"));
niveauActuel = 1;
timeTot = 0;
launchImpossibleGameOne("normalImpossible");
}
function playMoyenNormal() {
hideDiv(document.querySelector("#VanillalevelSelectionPage"));
showDiv(document.querySelector("#playPage"));
niveauActuel = 1;
timeTot = 0;
launchMoyenGameOne("normalMoyen");
}
function modeTuto() { function modeTuto() {
hideDiv(document.querySelector("#levelSelectionPage")); hideDiv(document.querySelector("#levelSelectionPage"));
showDiv(document.querySelector("#playPage")); showDiv(document.querySelector("#playPage"));
@ -891,8 +1011,32 @@ function wait(mode, btn) {
setTimeout(playFacileVanilla, time); setTimeout(playFacileVanilla, time);
setMode("Vanilla Facile"); setMode("Vanilla Facile");
break; break;
case "normal": case "vanillaImpossible":
setTimeout(playImpossibleVanilla, time);
setMode("Vanilla Impossible");
break;
case "vanillaMoyen":
setTimeout(playMoyenVanilla, time);
setMode("Vanilla Moyen");
break;
case "normalFacile":
setTimeout(playFacileNormal, time);
setMode("Normal Facile");
break;
case "normalImpossible":
setTimeout(playImpossibleNormal, time);
setMode("Vanilla Impossible");
break;
case "normalMoyen":
setTimeout(playMoyenNormal, time);
setMode("Normal Moyen");
break;
case "normalInfini":
setTimeout(playNormal, time); setTimeout(playNormal, time);
setMode("Normal Infini");
break;
case "normal":
setTimeout(normalSelection, time);
setMode("Normal"); setMode("Normal");
break; break;
case "vanilla": case "vanilla":
@ -1063,7 +1207,7 @@ function launchGameOne(mode) {
if (mode === "normal") { if (mode === "normal") {
switchsInfoCopy.forEach(function (sw) { switchsInfoCopy.forEach(function (sw) {
switchsInfoCopy.forEach(function (sw) { switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) { if (getRandomArbitrary(0, 5) === 1) {
activeSwitch(sw.id); activeSwitch(sw.id);
checkAllSortieLogique(); checkAllSortieLogique();
} }
@ -1129,10 +1273,15 @@ function launchFacileGameOne(mode) {
case 22: case 22:
case 23: case 23:
case 24: case 24:
col = [5, 4, 3];
matchs = [[1, 3], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 25: case 25:
col = [5, 4, 3]; col = [5, 4, 3];
matchs = [[1, 3], [2, 2]]; matchs = [[1, 3], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]]; porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
isFinish = true;
break; break;
} }
for (let i = 0; i < 200; i++) { for (let i = 0; i < 200; i++) {
@ -1141,7 +1290,9 @@ function launchFacileGameOne(mode) {
break; break;
} }
if (mode === "normalFacile") { if (mode === "normalFacile") {
console.log(mode)
switchsInfoCopy.forEach(function (sw) { switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) { if (getRandomArbitrary(0, 3) === 1) {
activeSwitch(sw.id); activeSwitch(sw.id);
@ -1168,6 +1319,188 @@ function launchFacileGameOne(mode) {
} }
} }
function launchMoyenGameOne(mode) {
document.querySelector(".niveau").innerHTML = niveauActuel + " / 25";
document.querySelector("#win_pannel").style.display = "none";
timer.stop();
timer.reset();
resetAllTabs(false);
var col = [];
var matchs = [];
var porteLogique = [];
var time = 30;
switch (niveauActuel) {
case 1:
case 2:
col = [4, 3];
matchs = [[1, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 3:
case 4:
col = [5, 3, 2];
matchs = [[1, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 5:
col = [5, 3, 2];
matchs = [[1, 3]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 7:
case 6:
col = [5, 4, 3];
matchs = [[1, 2], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
isFinish = true;
col = [7, 6, 5];
matchs = [[1, 3], [1, 2], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"], [true, "etnon"], [true, "nonou"]];
break;
}
for (let i = 0; i < 200; i++) {
tentative = i;
if (generator(matchs, col, porteLogique, mode, time) === false)
break;
}
if (mode === "normalMoyen") {
switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) {
activeSwitch(sw.id);
checkAllSortieLogique();
}
});
}
while (checkIfEnd()) {
for (let i = 0; i < 200; i++) {
tentative = i;
if (generator(matchs, col, porteLogique, mode, time) === false)
break;
}
if (mode === "normalMoyen") {
switchsInfoCopy.forEach(function (sw) {
switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) {
activeSwitch(sw.id);
checkAllSortieLogique();
}
});
});
}
}
}
function launchImpossibleGameOne(mode) {
document.querySelector(".niveau").innerHTML = niveauActuel + " / 25";
document.querySelector("#win_pannel").style.display = "none";
timer.stop();
timer.reset();
resetAllTabs(false);
var col = [];
var matchs = [];
var porteLogique = [];
var time = 20;
switch (niveauActuel) {
case 1:
case 2:
col = [4, 3];
matchs = [[1, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 3:
case 4:
col = [5, 3, 2];
matchs = [[1, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 5:
col = [5, 3, 2];
matchs = [[1, 3]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 7:
case 6:
col = [5, 4, 3];
matchs = [[1, 2], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"]];
break;
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
isFinish = true;
col = [7, 6, 5];
matchs = [[1, 3], [1, 2], [2, 2]];
porteLogique = [[true, "et"], [true, "ou"], [true, "inv"], [true, "etnon"], [true, "nonou"]];
break;
}
for (let i = 0; i < 200; i++) {
tentative = i;
if (generator(matchs, col, porteLogique, mode, time) === false)
break;
}
if (mode === "normalImpossible") {
switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) {
activeSwitch(sw.id);
checkAllSortieLogique();
}
});
}
while (checkIfEnd()) {
for (let i = 0; i < 200; i++) {
tentative = i;
if (generator(matchs, col, porteLogique, mode, time) === false)
break;
}
if (mode === "normalImpossible") {
switchsInfoCopy.forEach(function (sw) {
switchsInfoCopy.forEach(function (sw) {
if (getRandomArbitrary(0, 3) === 1) {
activeSwitch(sw.id);
checkAllSortieLogique();
}
});
});
}
}
}
function launchTuto() { function launchTuto() {
document.querySelector("#win_pannel").style.display = "none"; document.querySelector("#win_pannel").style.display = "none";
document.querySelector(".niveau").innerHTML = niveauActuel; document.querySelector(".niveau").innerHTML = niveauActuel;

@ -457,7 +457,7 @@ function generator(matchs, col, listePorteLogique, mode, time) {
if (time === undefined || time === null || time === -1) if (time === undefined || time === null || time === -1)
timeEnd = 999; timeEnd = 999;
else timeEnd = time; else timeEnd = time;
circles = [];
var groupes = []; var groupes = [];
var colCopy = []; var colCopy = [];
var links = []; var links = [];
@ -979,13 +979,16 @@ function generator(matchs, col, listePorteLogique, mode, time) {
for (let i = 0; i < matchs.length; i++) for (let i = 0; i < matchs.length; i++)
tempFork[i] = matchs[i - 1]; tempFork[i] = matchs[i - 1];
tempCol = col; tempCol = col;
tempPortes = logiquesTemp;
tempLinks = links;
tempMode = mode;
tempCircles = circles;
colonneTot = col.length; colonneTot = col.length;
for (let i = 0; i < colonneTot; i++) { for (let i = 0; i < colonneTot; i++) {
var pos = 0; var pos = 1;
logiquesTemp.forEach(function (logique) { logiquesTemp.forEach(function (logique) {
if (logique.col - 1 === i) { if (logique.col - 1 === i) {
createLogique(stage.width() / (colonneTot + 1) * (i + 1), (stage.height() / col[i] / 2 - imageHeight) + (stage.height() / 1.5 / col[i] * pos), logique.id, logique.type) createLogique(stage.width() / (colonneTot + 1) * (i + 1), (stage.height() - stage.height() / 100 * 25) / (col[i] + 1) * pos, logique.id, logique.type)
pos++; pos++;
} }
}); });
@ -1039,21 +1042,30 @@ function generator(matchs, col, listePorteLogique, mode, time) {
if (distance2 < distance1) { if (distance2 < distance1) {
if (getLogiqueFromLine(logique.id1) === null && getLogiqueFromLine(logique.id2) === null) { if (getLogiqueFromLine(logique.id1) === null && getLogiqueFromLine(logique.id2) === null) {
let switch1Id = getSwitchFromLine(logique.id1).id; let switch1Id = getSwitchFromLine(logique.id1).id;
let switch2Id = getSwitchFromLine(logique.id2).id; let switch2Id = getSwitchFromLine(logique.id2).id;
removeLine(logique.id1); removeLine(logique.id1);
removeLine(logique.id2); removeLine(logique.id2);
logique.id1 = null; logique.id1 = null;
logique.id2 = null; logique.id2 = null;
createLink(stage.findOne("#" + switch1Id), logique);
createLink(stage.findOne("#" + switch2Id), logique); createLink(stage.findOne("#" + switch2Id), logique);
createLink(stage.findOne("#" + switch1Id), logique);
} else if (getLogiqueFromLine(logique.id1) !== null && getLogiqueFromLine(logique.id2) !== null) {
let log1 = getLogiqueFromLine(logique.id1).name;
let log2 = getLogiqueFromLine(logique.id2).name;
removeLine(logique.id1);
removeLine(logique.id2);
logique.id1 = null;
logique.id2 = null;
createLink(findLogique(log1), logique, "id2");
createLink(findLogique(log2), logique, "id1");
} }
} }
} }
}); });
checkAllSortieLogique();
} }

@ -7,7 +7,15 @@ function initAll() {
} }
function loadData() { function loadData() {
document.querySelector("#pseudo_show").innerHTML = generateName(); pseudo = localStorage.getItem("pseudo");
if (pseudo === null || pseudo === undefined) {
pseudo = generateName();
localStorage.setItem("pseudo", pseudo);
}
console.log(pseudo)
insertName(pseudo);
document.querySelector("#pseudo_show").innerHTML = pseudo;
document.querySelector("#active_switch_picker").value = colorSwitchActiveBackground; document.querySelector("#active_switch_picker").value = colorSwitchActiveBackground;
document.querySelector("#inactive_switch_setting").value = colorSwitchInnactiveBackground; document.querySelector("#inactive_switch_setting").value = colorSwitchInnactiveBackground;
} }
@ -66,20 +74,22 @@ height = window.innerHeight / 1.5;
function resetAllTabs(save) { function resetAllTabs(save) {
if (!save) { if (!save) {
circles = [];
logiques = [];
click = 0;
numberPerColonne = [];
liveColonneNumber = [];
timeEnd = 5; timeEnd = 5;
}
logiques = [];
clickTot = clickTot + click;
console.log(click + " : " + clickTot)
click = 0;
numberPerColonne = [];
liveColonneNumber = [];
numberOfSwitch = 0;
colonneTot = 0;
}
numberOfSwitch = 0;
colonneTot = 0;
switchs = [], lineCount = [], lines = [], endLines = [], end, switchsInfo = [], lineRemove = [], switchsInfoCopy = []; switchs = [], lineCount = [], lines = [], endLines = [], end, switchsInfo = [], lineRemove = [], switchsInfoCopy = [];
layer.destroyChildren(); layer.destroyChildren();
@ -130,7 +140,9 @@ function initEndGame(mode) {
function resetCache() { function resetCache() {
openModal("reset_cache"); openModal("reset_cache");
window.localStorage.removeItem('pseudo');
setTimeout(() => { setTimeout(() => {
location.reload(); location.reload();
}, 3000); }, 3000);
} }
@ -156,36 +168,90 @@ function saveStage() {
} }
stage.add(layer); stage.add(layer);
logique2 = logiques; resetAllTabs(true);
logiques = []; colonneTot = tempCol.length;
var logiqueCount = 0;
for (let i = 0; i < colonneTot; i++) { for (let i = 0; i < colonneTot; i++) {
liveColonneNumber[i] = []; var pos = 1;
tempPortes.forEach(function (logique) {
if (logique.col - 1 === i) {
createLogique(stage.width() / (colonneTot + 1) * (i + 1), (stage.height() - stage.height() / 100 * 25) / (tempCol[i] + 1) * pos, logique.id, logique.type)
pos++;
}
});
} }
for (let i = 0; i < colonneTot; i++) { tempLinks.forEach(function (link) {
for (let j = 0; j < numberPerColonne[i]; j++) { if (link[1] !== "end")
insertLogiqueColonne("logique" + logiqueCount, logique2[logiqueCount].type, i); createLink(findLogique(link[0]), findLogique(link[1]), link[2]);
logiqueCount++; });
//On place les rond si fork :
//On check la valeur entre 2 colonne :
var d1 = 0, tot = 0;
logiques.forEach(function (logique) {
if (d1 === 0) d1 = logique.x;
else if (d1 !== logique.x && tot === 0) {
tot = logique.x - d1;
} }
}
logiques.forEach(function (element) {
createLinkAuto(element.name);
}); });
tempCircles.forEach(function (cir) {
initEndGame(); logiques.forEach(function (logique) {
for (let i = 0; i < oldSwitch.length; i++) { if (logique.name === cir[1]) {
let id = i + 1; var circle = new Konva.Circle({
if (oldSwitch[i] == 1) { id: cir[0],
if (stage.findOne("#s" + id).fill() == colorSwitchInnactiveBackground) x: logique.x + imageWidth + (tot / 100 * pourcentageBreak),
activeSwitch("s" + id); y: logique.y + imageHeight / 2,
} else { radius: 10,
if (stage.findOne("#s" + id).fill() == colorSwitchActiveBackground) fill: 'black',
activeSwitch("s" + id); stroke: 'black',
strokeWidth: 4,
});
layer.add(circle);
stage.draw();
}
})
});
//On init la fin
initEndGame(tempMode);
//On change les lignes de places :
logiques.forEach(function (logique) {
if (logique.type !== "inv") {
var distance1;
var distance2;
if (getLogiqueFromLine(logique.id1) === null)
distance1 = getSwitchFromLine(logique.id1).y;
else distance1 = getLogiqueFromLine(logique.id1).y;
if (getLogiqueFromLine(logique.id2) === null)
distance2 = getSwitchFromLine(logique.id2).y;
else distance2 = getLogiqueFromLine(logique.id2).y;
if (distance2 < distance1) {
if (getLogiqueFromLine(logique.id1) === null && getLogiqueFromLine(logique.id2) === null) {
let switch1Id = getSwitchFromLine(logique.id1).id;
let switch2Id = getSwitchFromLine(logique.id2).id;
removeLine(logique.id1);
removeLine(logique.id2);
logique.id1 = null;
logique.id2 = null;
createLink(stage.findOne("#" + switch2Id), logique);
createLink(stage.findOne("#" + switch1Id), logique);
} else if (getLogiqueFromLine(logique.id1) !== null && getLogiqueFromLine(logique.id2) !== null) {
let log1 = getLogiqueFromLine(logique.id1).name;
let log2 = getLogiqueFromLine(logique.id2).name;
removeLine(logique.id1);
removeLine(logique.id2);
logique.id1 = null;
logique.id2 = null;
createLink(findLogique(log1), logique, "id2");
createLink(findLogique(log2), logique, "id1");
}
}
} }
} });
checkAllSortieLogique();
} }
function showInfo() { function showInfo() {

File diff suppressed because one or more lines are too long

@ -45,37 +45,31 @@ timer.addEventListener('secondsUpdated', function (e) {
}); });
function endTime() { function endTime() {
if (!isTuto) { console.log(modeG)
if (modeG === "vanilla" || modeG === "normal") {
closeGame(); closeGame();
var score = (niveauActuel * (50 / timeTot)).toFixed(2); clickTot = clickTot + click;
document.querySelector("#scoreTotGameOver").innerHTML = score; var scoreTot
if (niveauActuel === 1)
scoreTot = 0;
else
scoreTot = ((1 / timeTot) * (1 / clickTot) * 1000).toFixed(2);
document.querySelector("#scoreTotGameOver").innerHTML = "Score : " + scoreTot;
document.querySelector("#niveauGameOver").innerHTML = niveauActuel; document.querySelector("#niveauGameOver").innerHTML = niveauActuel;
document.querySelector("#TempsTotGameOver").innerHTML = timeTot; document.querySelector("#TempsTotGameOver").innerHTML = "Temps : " + timeTot;
//calcul stars sendScore(scoreTot, modeG, clickTot, niveauActuel, 25, timeTot);
resetStar(); clickTot = 0;
if (score < 10) {
document.querySelector("#star1").style.color = "#fe8a71";
} else if (score > 10 || score < 50) {
document.querySelector("#star1").style.color = "#fe8a71";
document.querySelector("#star2").style.color = "#fe8a71";
} else if (score > 50 || score < 200) {
document.querySelector("#star1").style.color = "#fe8a71";
document.querySelector("#star2").style.color = "#fe8a71";
document.querySelector("#star3").style.color = "#fe8a71";
} else if (score > 200 || score < 400) {
document.querySelector("#star1").style.color = "#fe8a71";
document.querySelector("#star2").style.color = "#fe8a71";
document.querySelector("#star3").style.color = "#fe8a71";
document.querySelector("#star4").style.color = "#fe8a71";
} else {
document.querySelector("#star1").style.color = "#fe8a71";
document.querySelector("#star2").style.color = "#fe8a71";
document.querySelector("#star3").style.color = "#fe8a71";
document.querySelector("#star4").style.color = "#fe8a71";
document.querySelector("#star5").style.color = "#fe8a71";
}
openModal('gameOver'); openModal('gameOver');
} else {
if (!isTuto) {
closeGame();
document.querySelector("#scoreTotGameOver").innerHTML = "Vous devez réussir tout les niveaux pour être classé";
document.querySelector("#niveauGameOver").innerHTML = "";
document.querySelector("#TempsTotGameOver").innerHTML = "";
openModal('gameOver');
}
} }
} }
function resetStar() { function resetStar() {

@ -9,10 +9,11 @@
<body> <body>
<script src="db.js"></script> <script src="db.js"></script>
<script src="sql.js"></script>
<script> <script>
var pseudo = "rrrrrrrrrrr";
//getTest(); //sendScore(500, "normal", 49, 1, 1, 200);
//getScore("normal");
//changePseudo("pierre", "rrrrrrrrrrr");
</script> </script>
</body> </body>

Loading…
Cancel
Save