Commit db9d07f6 authored by etienne912's avatar etienne912
Browse files

ca marche, il reste quelques trucs a faire

parent 9ce02f5d
......@@ -18,23 +18,25 @@ class Routeur {
// Redirige un utilisateur
public function redirige() {
//Si on est connecté
//TODO:Enlever $_GET['connected'] qui permet de bypass l'authentification pour les tests
if (isset($_GET["replay"])) {
unset($_SESSION["villes"]);
unset($_SESSION["villes_old"]);
header('Location: index.php');
} else if (isset($_GET["deco"])) {
session_destroy();
header('Location: index.php');
}
if (isset($_SESSION["villes"])) {
$this->ControleurJeu = new ControleurJeu(unserialize($_SESSION["villes"]));
$this->ControleurJeu = new ControleurJeu(unserialize($_SESSION["villes"]),unserialize($_SESSION["villes_old"]));
} else {
$_SESSION["villes"] = serialize(new Villes());
$this->ControleurJeu = unserialize($_SESSION["villes"]);
}
if ($_GET["deconnection"]) {
unset($_SESSION['Auth']);
$_SESSION["villes_old"] = serialize(new Villes());
$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;
}
......@@ -42,10 +44,13 @@ class Routeur {
if (isset($_SESSION['Auth'])) {
if (isset($_POST['stats'])) {
$this->ControleurStatistiques->statistiques();
} else if (isset($_GET["annulerCoup"])) {
$this->ControleurJeu->annulerCoup();
} else if (isset($_GET["actX"]) && isset($_GET["actY"]) && isset($_GET["actLierX"]) && isset($_GET["actLierY"])) {
$this->ControleurJeu->lier($_GET["actX"], $_GET["actY"], $_GET["actLierX"], $_GET["actLierY"]);
} else {
$this->ControleurJeu->jeu($_GET["actX"], $_GET["actY"], $_GET["actMauvX"], $_GET["actMauvY"]);
}
$this->ControleurJeu->jeu();
} else {
$this->ControleurAuthentification->demandeAuthentification();
}
......
......@@ -8,23 +8,34 @@ class ControleurJeu {
private $vue;
private $villes;
private $villes_o;
function __construct($villes) {
function __construct($villes, $villes_old) {
$this->vue = new VueJeu();
$this->villes = $villes;
$this->villes_o = $villes_old;
}
function jeu() {
function jeu($actX, $actY, $actMauvX, $actMauvY) {
$actX = isset($actX) ? $actX :-1;
$actY = isset($actY) ? $actY :-1;
$actMauvX = isset($actMauvX) ? $actMauvX :-1;
$actMauvY = isset($actMauvY) ? $actMauvY :-1;
$this->vue->afficherJeu($this->villes);
$this->vue->afficherJeu($this->villes, $actX, $actY, $actMauvX, $actMauvY);
}
function lier($villeAX,$villeAY,$villeBX,$villeBY){
$villeA = $this->villes->getVille($villeAX,$villeAY);
$villeB = $this->villes->getVille($villeBX,$villeBY);
$villeA->lierVilles($villeB);
$villeB->lierVilles($villeA);
$this->jeu();
function annulerCoup() {
$this->villes = $this->villes_o;
$_SESSION["villes"] = serialize($this->villes);
$this->jeu(null, null, null, null);
}
function lier($villeAX, $villeAY, $villeBX, $villeBY) {
$_SESSION["villes_old"] = serialize($this->villes);
$this->villes->lierVilles($villeAX, $villeAY, $villeBX, $villeBY);
$_SESSION["villes"] = serialize($this->villes);
$this->jeu(null, null, null, null);
}
......
......@@ -102,6 +102,16 @@ td.show {
background-color: #f5ffbf;
}
td.tropPonts {
border: 1px solid black;
background-color: #ff991d;
}
td.ok {
border: 1px solid black;
background-color: #0000ff;
}
td.active {
border: 1px solid black;
background-color: #00ff02;
......
......@@ -57,6 +57,10 @@ class Ville {
return $this->nombrePonts == $this->nombrePontsMax;
}
function aTropPonts(){
return $this->nombrePonts > $this->nombrePontsMax;
}
}
?>
\ No newline at end of file
......@@ -28,6 +28,41 @@ class Villes {
return $this->villes[$i][$j];
}
function getVilleId($id) {
foreach ($this->villes as $ligne) {
foreach ($ligne as $ville) {
if ($ville->getId() == $id) {
return $ville;
}
}
}
return null;
}
function getX($id) {
for ($i = 0; $i <= 6; ++$i) {
for ($j = 0; $j <= 6; ++$j) {
if (isset($this->villes[$i][$j]) && $this->villes[$i][$j]->getId() == $id) {
return $i;
}
}
}
return -1;
}
function getY($id) {
for ($i = 0; $i <= 6; ++$i) {
for ($j = 0; $j <= 6; ++$j) {
if (isset($this->villes[$i][$j]) && $this->villes[$i][$j]->getId() == $id) {
return $j;
}
}
}
return -1;
}
// modifieur qui value le nombre de ponts de la ville en position $i et $j;
// précondition: la ville en position $i et $j existe
......@@ -45,11 +80,11 @@ class Villes {
return isset($this->villes[$i][$j]);
}
function estFini(){
foreach ($this->villes as $ligne){
foreach ($ligne as $ville){
if(isset($ville)){
if(!$ville->estFinie()){
function estFini() {
foreach ($this->villes as $ligne) {
foreach ($ligne as $ville) {
if (isset($ville)) {
if (!$ville->estFinie()) {
return false;
}
}
......@@ -58,24 +93,35 @@ class Villes {
return true;
}
function lierVilles($vilAX,$vilAY,$vilBX,$vilBY){
$villeA = $this->getVille($vilAX,$vilAY);
$villeB = $this->getVille($vilBX,$vilBY);
function getVillesLiees() {
return $this->villesLiees;
}
if (isset($this->villesLiees[$idVille])) {
if ($this->villesLiees[$idVille] == 0 || $this->villesLiees[$idVille] == 1) {
$this->villesLiees[$idVille]++;
function lierVilles($vilAX, $vilAY, $vilBX, $vilBY) {
$villeA = $this->getVille($vilAX, $vilAY);
$villeB = $this->getVille($vilBX, $vilBY);
$villeAId = $villeA->getId();
$villeBId = $villeB->getId();
if (isset($this->villesLiees[$villeAId][$villeBId])) {
if ($this->villesLiees[$villeAId][$villeBId] == 0 || $this->villesLiees[$villeAId][$villeBId] == 1) {
$this->villesLiees[$villeAId][$villeBId]++;
$this->villesLiees[$villeBId][$villeAId]++;
$villeA->setNombrePonts($villeA->getNombrePonts() + 1);
$villeB->setNombrePonts($villeB->getNombrePonts() + 1);
} else {
$this->villesLiees[$idVille] = 0;
$this->villesLiees[$villeAId][$villeBId] = 0;
$this->villesLiees[$villeBId][$villeAId] = 0;
$villeA->setNombrePonts($villeA->getNombrePonts() - 2);
$villeB->setNombrePonts($villeB->getNombrePonts() - 2);
}
} else {
$this->villesLiees[$idVille] = 1;
$this->villesLiees[$villeAId][$villeBId] = 1;
$this->villesLiees[$villeBId][$villeAId] = 1;
$villeA->setNombrePonts($villeA->getNombrePonts() + 1);
$villeB->setNombrePonts($villeB->getNombrePonts() + 1);
}
}
}
......@@ -2,7 +2,7 @@
class VueJeu {
function afficherJeu($villes) {
function afficherJeu($villes, $actX, $actY, $actMauvX, $actMauvY) {
header("Content-type: text/html; charset=utf-8");
?>
<!DOCTYPE html>
......@@ -19,7 +19,7 @@ class VueJeu {
<li><a href="index.php">Accueil</a></li>
<li><a href="index.php?page=profil">Mon profil</a></li>
<li><a href="index.php?page=leaderboard">Leaderboard</a></li>
<li style="float:right"><a href="index.php?deconnection=true">Déconnection</a></li>
<li style="float:right"><a href="index.php?deco">Déconnection</a></li>
</ul>
</nav>
......@@ -27,6 +27,11 @@ class VueJeu {
<h1>Jeux du Bridges</h1><br>
<?php
echo "<a href='index.php?annulerCoup'> Annuler le dernier coup</a><br>";
echo "<a href='index.php?replay'> Relancer la partie</a><br>";
?>
<br>
<div class="conteneur">
......@@ -37,13 +42,8 @@ class VueJeu {
<?php
if (!$villes->estFini()) {
$actX = isset($_GET["actX"]) ? $_GET["actX"] :-1;
$actY = isset($_GET["actY"]) ? $_GET["actY"] :-1;
$actMauvX = isset($_GET["actMauvX"]) ? $_GET["actMauvX"] :-1;
$actMauvY = isset($_GET["actMauvY"]) ? $_GET["actMauvY"] :-1;
$actLierX = isset($_GET["actLierX"]) ? $_GET["actLierX"] :-1;
$actLierY = isset($_GET["actLierY"]) ? $_GET["actLierY"] :-1;
$pontSimpleHorizontal = "<td><p>-----</p></td>";
$pontSimpleHorizontal = "<td><p>----------------</p></td>";
$pontDoubleHorizontal = "<td><p>=====</p></td>";
$pontSimpleVertical = "<td><p>|</p><p>|</p></td>";
$pontDoubleVertical = "<td><p>| |</p><p>| |</p></td>";
......@@ -56,15 +56,27 @@ class VueJeu {
if ($i == $actX && $j == $actY) {
$plateau[$i][$j] = "<td class='active'>";
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php'>" . $villes->getVille($i, $j)->getNombrePontsMax();
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php'>" . $villes->getVille($i, $j)->getNombrePontsMax() . "</a>";
$plateau[$i][$j] = $plateau[$i][$j] . "</td>";
} else if ($i == $actX || $j == $actY) {
$plateau[$i][$j] = "<td class='show'>";
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?&actX=$actX&actY=$actY&actLierX=$i&actLierY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax();
if ($villes->getVille($i, $j)->aTropPonts()) {
$plateau[$i][$j] = "<td class='tropPonts'>";
} else if ($villes->getVille($i, $j)->estFinie()) {
$plateau[$i][$j] = "<td class='ok'>";
} else {
$plateau[$i][$j] = "<td class='show'>";
}
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?&actX=$actX&actY=$actY&actLierX=$i&actLierY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax() . "</a>";
$plateau[$i][$j] = $plateau[$i][$j] . "</td>";
} else {
$plateau[$i][$j] = "<td class='show'>";
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?actMauvX=$i&actMauvY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax();
if ($villes->getVille($i, $j)->aTropPonts()) {
$plateau[$i][$j] = "<td class='tropPonts'>";
} else if ($villes->getVille($i, $j)->estFinie()) {
$plateau[$i][$j] = "<td class='ok'>";
} else {
$plateau[$i][$j] = "<td class='show'>";
}
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?actMauvX=$i&actMauvY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax() . "</a>";
$plateau[$i][$j] = $plateau[$i][$j] . "</td>";
}
......@@ -72,10 +84,16 @@ class VueJeu {
if ($i == $actMauvX && $j == $actMauvY) {
$plateau[$i][$j] = "<td class='activeMauvais'>";
} else {
$plateau[$i][$j] = "<td class='show'>";
if ($villes->getVille($i, $j)->aTropPonts()) {
$plateau[$i][$j] = "<td class='tropPonts'>";
} else if ($villes->getVille($i, $j)->estFinie()) {
$plateau[$i][$j] = "<td class='ok'>";
} else {
$plateau[$i][$j] = "<td class='show'>";
}
}
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?actX=$i&actY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax();
$plateau[$i][$j] = $plateau[$i][$j] . "<a href='index.php?actX=$i&actY=$j'>" . $villes->getVille($i, $j)->getNombrePontsMax() . "</a>";
$plateau[$i][$j] = $plateau[$i][$j] . "</td>";
}
......@@ -87,6 +105,42 @@ class VueJeu {
}
}
$ponts = $villes->getVillesLiees();
for ($i = 0; $i <= 6; ++$i) {
for ($j = $i; $j <= 6; ++$j) {
if (isset($ponts[$i][$j]) && $ponts[$i][$j] != 0) {
$vAX = $villes->getX($i);
$vAY = $villes->getY($i);
$vBX = $villes->getX($j);
$vBY = $villes->getY($j);
if ($vAX == $vBX) {
$departPont = min($vAY, $vBY) + 1;
$finPont = max($vAY, $vBY) - 1;
$tempate = $ponts[$i][$j] == 1 ? $pontSimpleHorizontal :$pontDoubleHorizontal;
for ($x = $departPont; $x <= $finPont; ++$x) {
$plateau[$vAX][$x] = $tempate;
}
} else {
$departPont = min($vAX, $vBX) + 1;
$finPont = max($vAX, $vBX) - 1;
$tempate = $ponts[$i][$j] == 1 ? $pontSimpleVertical :$pontDoubleVertical;
for ($x = $departPont; $x <= $finPont; ++$x) {
$plateau[$x][$vAY] = $tempate;
}
}
}
}
}
foreach ($plateau as $ligne) {
echo "<tr>";
......@@ -99,7 +153,7 @@ class VueJeu {
} else {
echo "<h1>tu as gagné !</h1><br>";
echo "<a href='index.php?replay'> Refaire une partie";
echo "<a href='index.php?replay'> Refaire une partie</a>";
}
......
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