From b8db1ba3b84200072258bfec19990c179c5d55f9 Mon Sep 17 00:00:00 2001 From: "victor.soulier" Date: Sun, 19 Nov 2023 18:37:23 +0100 Subject: [PATCH] ADD ; controleur du pendu --- project/src/controller/PenduController.php | 76 +++++++++++++++++++++- 1 file changed, 73 insertions(+), 3 deletions(-) diff --git a/project/src/controller/PenduController.php b/project/src/controller/PenduController.php index 9ddec7f..f881d34 100644 --- a/project/src/controller/PenduController.php +++ b/project/src/controller/PenduController.php @@ -4,13 +4,83 @@ namespace controller; use model\ConfigurationJeu; use model\Joueur; +use model\MdlPendu; use model\MdlScientifique; +use config\Validation; +use model\ValidationException; class PenduController{ + private array $dVue; + private array $dVueErreur; + private MdlPendu $pendu; public function __construct(Joueur $role, ConfigurationJeu $configJeu) { - echo "pendu"; - $t = new MdlScientifique(); - var_dump($t->getRandom()); + $this->dVue = []; + $this->dVueErreur = []; + if(isset($_SESSION['pendu']) && Validation::valMdlPendu($_SESSION['pendu'], $this->dVueErreur)){ + $this->pendu = $_SESSION['pendu']; + }else{ + $this->reinit(); + } + + if(isset($_POST['lettre'])){ + try{ + $this->pendu->jouerLettre($_POST['lettre']); + }catch (ValidationException $e){ + $this->dVueErreur[] = $e->getMessage(); + } + } + + if($this->pendu->aGagne()){ + $this->renderAgagne(); + }elseif($this->pendu->aPerdu()){ + $this->renderAPerdu(); + }else{ + $this->renderJeu(); + } + } + + private function reinit(){ + $mdlScientifique = new MdlScientifique(); + $scientifique = $mdlScientifique->getRandom(); + $this->pendu = new MdlPendu($scientifique); + $_SESSION['pendu'] = $this->pendu; + } + + private function renderJeu(){ + global $twig, $config; + $this->dVue['decouvert'] = $this->pendu->getDecouvert(); + $this->dVue['essaisRestant'] = $this->pendu->getEssaisRestant(); + $lettreUtilisees = $this->pendu->getLettreUtilisees(); + sort($lettreUtilisees); + $this->dVue['lettresUtilisees'] = $lettreUtilisees; + echo $twig->render($config['templates']['pendu'], ['dVue' => $this->dVue, 'dVueErreur'=>$this->dVueErreur]); + } + + private function renderAgagne(){ + $this->dVue['messageScore'] = "Vous avez gagné !"; + $this->renderScore(); + } + + private function renderAPerdu(){ + $this->dVue['messageScore'] = "Vous avez perdu !"; + $this->renderScore(); + } + + private function renderScore(){ + global $twig, $config; + $this->dVue['nbTours'] = $this->pendu->getNbTours(); + $this->dVue['nbFails'] = $this->pendu->getNbFails(); + $scientifique = $this->pendu->getScientifique(); + $dScientifique = []; + $dScientifique['nom'] = $scientifique->getNom(); + $dScientifique['prenom'] = $scientifique->getPrenom(); + $dScientifique['sexe'] = $scientifique->getSexe()->getLibelle(); + $dScientifique['thematique'] = $scientifique->getThematique()->getLibelle(); + $dScientifique['dateNaiss'] = $scientifique->getDateNaiss()->format('d/m/Y'); + $this->dVue['scientifique'] = $dScientifique; + unset($_SESSION['pendu']); + + echo $twig->render($config['templates']['penduScore'], ["dVue" => $this->dVue]); } } \ No newline at end of file