Corection de bug lors de la fin du mode Histoire +

Ajout page GameEnd +
Gestion du cas un joeur a finit toute ses enigmesq multi (en cours) +
Améliorations des erreurs afficher aux visiteur +
Calcule du temps max d'une partie
ServeurDeTest
Noé GARNIER 2 years ago
parent 9fbf1820ff
commit 305ba1daa1

@ -13,12 +13,18 @@ $sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong";
//Page
$vues['main'] = 'View/src/pages/Main.php';
$vues['presentation'] = 'View/src/pages/Presentation.html';
//LogSign
$vues['login'] = 'View/src/pages/LogSign/Login.php';
$vues['signUp'] = 'View/src/pages/LogSign/SignUp.php';
$vues['mail'] = 'View/src/pages/LogSign/Mail.php';
$vues['confirm'] = 'View/src/pages/LogSign/Confirm.php';
//Test
$vues['test'] = 'View/src/pages/FirstTests/FirstTest1.php';
$vues['next'] = 'View/src/pages/FirstTests/FirstTest';
//Admin
$vues['admin'] = 'View/src/pages/Admin/Admin.php';
$vues['addEnigmeSolo'] = 'View/src/pages/Admin/AddEnigmeSolo.php';
$vues['enigmeMultiManager'] = 'View/src/pages/Admin/EnigmeMultiManager.php';
@ -28,20 +34,26 @@ $vues['modifEnigmeSolo'] = 'View/src/pages/Admin/ModifEnigmeSolo.php';
$vues['adminSolo'] = 'View/src/pages/Admin/AdminSolo.php';
$vues['seeOrdre'] = 'View/src/pages/Admin/SeeOrdre.php';
$vues['modifOrdre'] = 'View/src/pages/Admin/ModifOrdre.php';
//Mulijoueur
$vues['partie'] = 'View/src/pages/Multijoueur/Partie.php';
$vues['queue'] = 'View/src/pages/Multijoueur/FileAttente.php';
$vues['queue'] = 'View/src/pages/Multijoueur/GameEnd.php';
// Enigme
$vues['enigmePage'] = 'View/src/pages/Enigme/EnigmePage.php';
//Error
$vues['erreur'] = 'View/src/pages/Erreur.php';
$error = "";
// Server
$BUFFER_SIZE = 1024;
$serverAdress = "82.165.180.114";
$port= "3000";
$playerNumberPerGame = 2;
//modules
// Modules
$modules = 'node_module/';
//Error
$vues['erreur'] = 'View/src/pages/Erreur.php';
$error = "";

@ -159,6 +159,14 @@ class EnigmeGateway
$tabEnigme=EnigmeFactory::create($results);
return $tabEnigme;
}
public function getLastOrdre() : int
{
$query = "SELECT ordre FROM Enigme ORDER BY ordre DESC LIMIT 1";
$this->con->executequery($query);
$results = $this->con->getResults();
return $results[0]['ordre'];
}
public function findByOrdre(int $ordre) : array
{
$query = "SELECT * FROM Enigme WHERE ordre = :ordre";

@ -14,8 +14,6 @@ class FrontController
$role = "visitor";
}
// Check if action exists
//echo "FrontConroller : action = " . $_REQUEST['action'] . "<br>";
//echo "role = " . $role . "<br>";
$action = $nettoyage->clean($_REQUEST['action']);
if ($role == "user") {
if ($action == NULL) {
@ -23,9 +21,11 @@ class FrontController
new UserController();
} else if (method_exists('UserController', $action) == false) {
$error = "Action non valide " . $action;
if ($role == "visitor"){
$error = $error . " Pour accéder à cette page, vous devez vous connecter";
}
require($rep . $vues['erreur']);
} else {
//echo "action user valide";
$_REQUEST['action'] = $action;
new UserController();
}
@ -38,12 +38,10 @@ class FrontController
$error = "Action non valide" . $action;
require($rep . $vues['erreur']);
} else {
//echo "action admin valide";
$_REQUEST['action'] = $action;
new AdminController();
}
} else {
//echo "action visiteur";
$_REQUEST['action'] = $action;
new VisitorController();
}

@ -152,7 +152,7 @@ class PartieGateway
);
}
public function createPartieMulti(Enigme $enigme, string $mailUtilisateur)
public function createPartieMulti(array $lesEnigmes, string $mailUtilisateur)
{
$query = "INSERT INTO Partie VALUES (NULL,:date)";
$currentDate = date('Y-m-d H:i:s');
@ -161,12 +161,17 @@ class PartieGateway
)
);
$partie = $this->findLastPartie();
$tpsMaxPartie = 0;
$query = "INSERT INTO Contenir VALUES (:partie,:idEnigme,1)";
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
"idEnigme" => array($enigme->getIdEnigme(), SQLITE3_INTEGER)
)
);
foreach ($lesEnigmes as $enigme) {
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
"idEnigme" => array($enigme->getIdEnigme(), SQLITE3_INTEGER)
)
);
$tpsMaxPartie += $enigme->getTemps();
}
$_SESSION['tpsMaxPartie'] = $tpsMaxPartie;
$query = "INSERT INTO Participer VALUES (:partie,:utilisateur,0)";
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
@ -316,17 +321,6 @@ class PartieGateway
return $row['enigme'];
}
public function getIndex(int $idPartie, int $idEnigme){
$query = "SELECT * FROM Contenir WHERE partie = :idPartie AND enigme = :idEnigme";
$this->con->executeQuery($query, array(
"idPartie" => array($idPartie, SQLITE3_INTEGER),
"idEnigme" => array($idEnigme, SQLITE3_INTEGER)
)
);
$results = $this->con->getResults();
$row = $results[0];
return $row['indexEnigme'];
}
public function showAll(): void
{
$query = "SELECT * FROM Partie";

@ -229,5 +229,13 @@ class ResoudreGateway
{
return $results[0]['enigme'];
}
}
}
public function getLastIndex(int $idPartie) : int{
$query="SELECT max(indexEnigme) FROM Resoudre
WHERE partie=:partie";
$this->con->executeQuery($query, array(
"partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults();
return $results[0]['max(indexEnigme)'];
}
}

@ -34,6 +34,9 @@ class UserController
case "enigmeEnded":
$this->enigmeEnded();
break;
case "enigmeMultiEnded":
$this->enigmeMultiEnded();
break;
case "goToQueue":
$this->goToQueue();
break;
@ -168,12 +171,32 @@ class UserController
$utilisateur=$_SESSION['utilisateur'];
$model->enigmeEnded($utilisateur->getEmail(),$enigme->getIdEnigme());
$_REQUEST['ordre'] = $ordre + 1;
header("Location: index.php?action=goToEnigme&ordre=" . $_REQUEST['ordre']);
$lastOrdre = $model->getLastOrdre();
if ($_REQUEST['ordre'] = $lastOrdre) {
$this->goToHome();
}
else {
header("Location: index.php?action=goToEnigme&ordre=" . $_REQUEST['ordre']);
}
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function enigmeMultiEnded(){
try {
global $rep, $vues;
$model = new UserModel();
$index = $_REQUEST['index'];
$enigme = $model->getEnigmebyPartieIdAndIndex($_SESSION['idPartie'],$index);
$utilisateur=$_SESSION['utilisateur'];
$model->enigmeEnded($utilisateur->getEmail(),$enigme->getIdEnigme());
$index = $index + 1;
header("Location: index.php?action=goToGame&index=" . $index);
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function goToQueue()
{
@ -218,10 +241,16 @@ class UserController
$utilisateur = $_SESSION['utilisateur'];
$idPartie = $_GET['idPartie'];
$index = $_GET['index'];
$enigme = $model->getEnigmebyPartieIdAndIndex($idPartie, $index);
$model->resoudreEnigmeMulti($utilisateur, $enigme->getIdEnigme(), $idPartie, $index);
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
require($rep . $vues['partie']);
$lastIndex = $model->getLastIndex($idPartie);
if($index == $lastIndex + 1){
require($rep . $vues['gameEnd']);
}
else{
$enigme = $model->getEnigmebyPartieIdAndIndex($idPartie, $index);
$model->resoudreEnigmeMulti($utilisateur, $enigme->getIdEnigme(), $idPartie, $index);
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
require($rep . $vues['partie']);
}
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);

@ -29,7 +29,8 @@ class UserModel
$idPartie=$this->partie_gateway->findPartieInQueue();
if ($idPartie == 0){
$enigme= $this->enigme_gateway->getRandomEnigme();
$this->partie_gateway->createPartieMulti($enigme, $mailUtilisateur);
$lesEnigmes = array($enigme);
$this->partie_gateway->createPartieMulti($lesEnigmes, $mailUtilisateur);
$idPartie=$this->partie_gateway->findPartieInQueue();
$etat=$this->partie_gateway->getEtat($idPartie);
return array($idPartie, $etat);
@ -135,11 +136,15 @@ class UserModel
return $this->enigme_gateway->findById($idEnigme)[0];
}
public function getIndex($mailUtilisateur, $idPartie){
return $this->partie_gateway->getIndex($idPartie, $mailUtilisateur);
}
public function findEnigmeById(int $enigmeId) : Engine{
return $this->enigme_gateway->findById($enigmeId)[0];
}
public function getLastIndex(int $idPartie) : int{
return $this->resoudre_gateway->getLastIndex($idPartie);
}
public function getLastOrdre() :int {
return $this->enigme_gateway->getLastOrdre();
}
}

@ -0,0 +1,37 @@
<!doctype html>
<html lang="en">
<head>
<title>GameEnd</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<h1>lobby de fin de partie</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<p>Vous avez terminer toute les énimges.</p>
<p>Temps restant avant la fin de la partie :</p><br>
<p><?php echo $_SESSION['tpsMaxPartie']?></p>
</div>
</div>
</div>
<!-- Bootstrap JavaScript Libraries -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous">
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js"
integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous">
</script>
</body>
</html>

@ -150,7 +150,7 @@
<div class="modal-footer">
<a
<?php
echo 'href="index.php?';
echo 'href="index.php?action=enigmeMultiEnded&index=' . $index .'"';
?>
class="btn" style="display: none" id="next"
>

Loading…
Cancel
Save