Commit 639896a5 authored by etienne912's avatar etienne912
Browse files

correction de bugs, optimisations multiples et ajout de PHPDoc

parent 5aa5e349
......@@ -197,5 +197,42 @@ class Villes {
}
}
/**
* Cette fonction permet de savoir si le jeu est sans île ( toutes les villes sont reliées interconnectée)
* @return bool vrai s'il n'y a pas d'île
*/
function estSansIles() {
$listVillesTraitees = array();
$listVillesNonTraitees = array();
array_push($listVillesNonTraitees, 0);
while (!empty($listVillesNonTraitees)) {
$actuel = array_pop($listVillesNonTraitees);
if (!in_array($actuel, $listVillesTraitees)) { // si la ville à déjà été traitée
array_push($listVillesTraitees, $actuel); // on l'ajoute a la liste des villes traitées
$descendantActuel = $this->descendant($actuel); // on recupère ses déscendants
$listVillesNonTraitees = array_merge_recursive($listVillesNonTraitees, $descendantActuel); // on ajoute les déscendant a la listes des villes non traitées
$listVillesNonTraitees = array_unique($listVillesNonTraitees);
}
}
// si le nombre de villes auquel on a pu accéder depuis la ville 0 est équal au nombre de ville du jeu
// alors il n'y a pas d'île
return count($listVillesTraitees) == $this->getnbVilles();
}
}
/**
* Cette méthode est utiliser pour récupérer les villes qui sont connectée à la ville Id
* @param $id int l'identidifiant de la ville
* @return array la liste des villes connectées
*/
private function descendant($id) {
$list = array();
for ($i = 0; $i < $this->getnbVilles(); ++$i) {
if (isset($this->villesLiees[$id][$i]) && $this->villesLiees[$id][$i] != 0) { // s'il y a un pont
array_push($list, $i);
}
}
return $list;
}
}
\ No newline at end of file
......@@ -63,10 +63,14 @@ class VueJeu {
// si le jeu est fini
if ($villes->estFini()) {
$_SESSION['etatDernierePartie'] = "gagne";
if ($villes->estSansIles())
$_SESSION['etatDernierePartie'] = "gagne";
else
$_SESSION['etatDernierePartie'] = "perdu";
header('Location: index.php?statistiques');
unset($_SESSION["villes"]);
unset($_SESSION["villes_old"]);
} else if ($villes->estPerdu()) { // si le jeu est perdu
$_SESSION['etatDernierePartie'] = "perdu";
header('Location: index.php?statistiques');
......
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