Commit 7dee0872 authored by Johann Bournazel's avatar Johann Bournazel
Browse files

Ajout de la gestion de l'abandon d'une partie lorsque l'on en commence une...

Ajout de la gestion de l'abandon d'une partie lorsque l'on en commence une nouvelle au niveau de la base de donnée.
Ajout de la gestion d'une partie gagnée au niveau de la base de donnée.
Modifications du style de la page stats.
parent 35c36e05
......@@ -25,6 +25,11 @@ class Routeur {
} else if (isset($_GET["deco"])) {
session_destroy();
header('Location: index.php');
}else if(isset($_GET["newGame"])){
unset($_SESSION["villes"]);
unset($_SESSION["villes_old"]);
$_SESSION["etatDernierePartie"] = "abandonne";
header('Location: index.php?statistiques');
}
if (isset($_SESSION["villes"])) {
......@@ -35,15 +40,14 @@ class Routeur {
$this->ControleurJeu = new ControleurJeu(unserialize($_SESSION["villes"]),unserialize($_SESSION["villes_old"]));
}
//TODO:Enlever $_GET['connected'] qui permet de bypass l'authentification pour les tests
if (isset($_GET['connected'])) {
$_SESSION["Auth"] = true;
}
//Si l'utilisateur s'est déjà connecté sur le site
if (isset($_SESSION['Auth'])) {
if (isset($_GET['statistiques'])) {
$this->ControleurStatistiques->afficheStatistiques();
if(isset($_SESSION["etatDernierePartie"])){
$this->ControleurStatistiques->afficheStatistiques($_SESSION["etatDernierePartie"]);
}else{
$this->ControleurStatistiques->afficheStatistiques(null);
}
} else if (isset($_GET["annulerCoup"])) {
$this->ControleurJeu->annulerCoup();
} else if (isset($_GET["actX"]) && isset($_GET["actY"]) && isset($_GET["actLierX"]) && isset($_GET["actLierY"])) {
......
......@@ -18,12 +18,21 @@ class ControleurStatistiques
}
}
function afficheStatistiques()
function afficheStatistiques($etatDernierePartie)
{
$ratioJoueurActuel = $this->modele->getRatioParties($_SESSION['pseudo']);
if($etatDernierePartie=="perdu" || $etatDernierePartie=="abandonne"){
$this->modele->ajouteNouvellePartiePerdue($_SESSION['pseudo']);
}else if($etatDernierePartie=="gagne"){
//Si on a gagné
$this->modele->ajouteNouvellePartieGagne($_SESSION['pseudo']);
}
$ratioJoueurActuel = $this->modele->getRatioParties($_SESSION['pseudo']);
$leaderboardRatios = $this->modele->getLeaderboardRatio();
$leaderboardPartiesGagnees = $this->modele->getLeaderboardPartiesGagnees();
$this->vue->afficheStatistiques($ratioJoueurActuel, $leaderboardRatios, $leaderboardPartiesGagnees);
$this->vue->afficheStatistiques($etatDernierePartie, $ratioJoueurActuel, $leaderboardRatios, $leaderboardPartiesGagnees);
unset($_SESSION["etatDernierePartie"]);
}
......
......@@ -108,6 +108,28 @@ class ModeleStatistiques {
}
}
public function ajouteNouvellePartieGagne($pseudo) {
try {
$statement = $this->connexion->prepare("insert into parties(pseudo, partieGagnee) values(?,1)");
$statement->bindParam(1, $pseudo);
$statement->execute();
} catch (PDOException $e) {
$this->deconnexion();
throw new TableAccesException("Problème avec la table joueurs.");
}
}
public function ajouteNouvellePartiePerdue($pseudo) {
try {
$statement = $this->connexion->prepare("insert into parties(pseudo, partieGagnee) values(?,0)");
$statement->bindParam(1, $pseudo);
$statement->execute();
} catch (PDOException $e) {
$this->deconnexion();
throw new TableAccesException("Problème avec la table joueurs.");
}
}
}
?>
......@@ -37,7 +37,7 @@ class VueJeu {
echo "</div>";
echo "<div class='flex-container actions-container'>";
echo "<a href='index.php?annulerCoup' class='link-button mg-top-10'><img src='vues/css/tick.png' alt='BackImage' class='icon'> Vérifier</a>";
echo "<a href='index.php?replay' class='link-button mg-top-10'><img src='vues/css/restart.png' alt='BackImage' class='icon'> Relancer une nouvelle partie</a>";
echo "<a href='index.php?newGame' class='link-button mg-top-10'><img src='vues/css/restart.png' alt='BackImage' class='icon'> Relancer une nouvelle partie</a>";
echo "</div>"
?>
<br>
......@@ -51,10 +51,10 @@ class VueJeu {
if (!$villes->estFini()) {
$pontSimpleHorizontal = "<td><p>--------------</p></td>";
$pontDoubleHorizontal = "<td><p>=====</p></td>";
$pontSimpleVertical = "<td><p>|</p></td>";
$pontDoubleVertical = "<td><p>| |</p><p>| |</p></td>";
$pontSimpleHorizontal = "<td><p><img class='img-traitH' src='vues/css/horizontal.png'><p></td>";
$pontDoubleHorizontal = "<td><p><img class='img-traitH' src='vues/css/horizontal.png'></p><p><img class='img-traitH' src='vues/css/horizontal.png'></p></td>";
$pontSimpleVertical = "<td><img class='img-traitV' src='vues/css/vertical.png'></td>";
$pontDoubleVertical = "<td><img class='img-traitV' src='vues/css/vertical.png'><img class='img-traitV' src='vues/css/vertical.png'></td>";
for ($i = 0; $i <= 6; ++$i) {
......@@ -160,8 +160,10 @@ class VueJeu {
} else {
echo "<h1>Partie gagnée</h1><br>";
echo "<a href='index.php?replay'> Rejouer</a>";
$_SESSION['etatDernierePartie'] = "gagne";
header('Location: index.php?statistiques');
unset($_SESSION["villes"]);
unset($_SESSION["villes_old"]);
}
......
......@@ -2,7 +2,7 @@
//Classe Vue permettant d'afficher les pages.
class VueStatistiques{
//Affiche une page d'authentification.
function afficheStatistiques($ratioJoueurActuel, $leaderboard, $leaderboardPartiesGagnees) {
function afficheStatistiques($etatDernierePartie, $ratioJoueurActuel, $leaderboard, $leaderboardPartiesGagnees) {
header("Content-type: text/html; charset=utf-8");
?>
<!DOCTYPE html>
......@@ -28,19 +28,32 @@ class VueStatistiques{
<h1>Statistiques</h1><br>
<?php
if($etatDernierePartie=="gagne"){
echo "Bravo, cette partie est gagnée !";
}else if($etatDernierePartie=="perdu"){
echo "La dernière partie est perdue !";
}else if($etatDernierePartie=="abandonne") {
echo "La dernière partie a été abandonné !";
}else{
//Le joueur n'as pas soumis sa partie ou n'as pas recommencé.
}
echo '<br/><br/>';
echo "Vous avez gagnées ".$ratioJoueurActuel['nbTotalPartiesGagnees']." parties sur un total de ".$ratioJoueurActuel["nbTotalParties"]." parties jouées.";
echo '<br/><br/>';
echo "Leaderbord des Ratios:".'<br/>';
echo '<div class="flex-container leaderboard">';
echo '<p>Leaderboard des ratios</p>';
echo '<p>Leaderboard des parties gagnées</p>';
echo '</div>';
echo '<div class="flex-container leaderboard">';
echo '<table><tr><th>Rang</th><th>Pseudo</th><th>Ratio</th></tr>';
echo '<tr><td>1</td><td>'.$leaderboard[0]['pseudo'].'</td><td>'.$leaderboard[0]['ratio'].'</td></tr>';
echo '<tr><td>2</td><td>'.$leaderboard[1]['pseudo'].'</td><td>'.$leaderboard[1]['ratio'].'</td></tr>';
echo '<tr><td>3</td><td>'.$leaderboard[2]['pseudo'].'</td><td>'.$leaderboard[2]['ratio'].'</td></tr>';
echo '</table></div>';
echo '</table>';
echo '<br/>';
echo "Leaderbord des Parties gagnées:".'<br/>';
echo '<div class="flex-container leaderboard"><table>';
echo '<table>';
echo '<tr><th>Rang</th><th>Pseudo</th><th>Total Parties gagnées</th><th>Total Parties perdues</th><th>Ratio</th></tr>';
if(is_numeric($leaderboardPartiesGagnees[0]['totalPartiesGagnees'])){
......
......@@ -98,7 +98,7 @@ html{
display:block;
}
input[type='text']{
input[type='text'],input[type='password']{
width:85%;
margin-top: 5px;
margin-bottom: 15px;
......@@ -159,8 +159,8 @@ input[type='submit']:hover{
color:grey;
}
.jeu {
width: 500px;
height: 500px;
width: 350px;
height: 350px;
margin: 0 auto;
background: darkgray;
border: 1px solid #111111;
......@@ -178,17 +178,16 @@ footer {
table {
width: 100%;
height: 100%;
border-spacing:0; /* Removes the cell spacing via CSS */
}
tr {
height: auto;
width: auto;
height: 49.999px;
}
td {
height: 50px;
width: 50px;
max-width:50px;
width: 49.999px;
box-sizing: border-box;
margin: 5px 5px;
padding: 0 0;
......@@ -213,8 +212,7 @@ td > a {
color: black;
}
td > p {
max-width: 50px;
max-height: 50px;
max-height: 25px;
}
td.show {
......@@ -304,24 +302,33 @@ body {
}
.leaderboard{
max-width: 700px;
color: #474f57;
justify-content: space-around!important;
}
.leaderboard table{
border-collapse:collapse;
width:35%;
}
.leaderboard tr:nth-child(2) {
background-color: #bdb629;
background-color: rgba(189, 182, 41, 0.51);
}
.leaderboard tr:nth-child(3){
background-color: #afbcc4;
background-color: rgba(175, 188, 196, 0.51);
}
.leaderboard tr:nth-child(4){
background-color: rgba(163, 120, 27, 0.74);
background-color: rgba(163, 120, 27, 0.51);
}
.leaderboard th{
}
.leaderboard tr:first-of-type{
background-color: #727cf533;
}
\ No newline at end of file
background-color: rgba(114, 124, 245, 0.7);
}
.img-traitH{
width: 100%;
height: 25px;
}
.img-traitV{
width: 50%;
height: 100%;
}
......@@ -30,7 +30,7 @@
<div class="form-group">
<label for="motDePasseConnexion">Mot de passe</label>
<br/>
<input type="text" name="motDePasseConnexion" id="motDePasseConnexion" placeholder="Entrez votre mot de passe"/>
<input type="password" name="motDePasseConnexion" id="motDePasseConnexion" placeholder="Entrez votre mot de passe"/>
</div>
<div class="form-group">
......
......@@ -32,7 +32,7 @@
<div class="form-group">
<label for="motDePasseConnexion">Mot de passe</label>
<br/>
<input type="text" name="motDePasseConnexion" id="motDePasseConnexion" placeholder="Entrez votre mot de passe"/>
<input type="password" name="motDePasseConnexion" id="motDePasseConnexion" placeholder="Entrez votre mot de passe"/>
</div>
<div class="form-group">
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment