From 5a29785672e58577e8dc7701f4436721e339c78d Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Tue, 16 Apr 2024 23:25:57 +0200 Subject: [PATCH] =?UTF-8?q?la=20cr=C3=A9ation=20de=20la=20partie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controleurs/creerPartie_controleur.php | 56 ++++++++++-- vues/creerPartie_vue.php | 119 ++++++++++++++++++++----- 2 files changed, 148 insertions(+), 27 deletions(-) diff --git a/controleurs/creerPartie_controleur.php b/controleurs/creerPartie_controleur.php index 930f2dc..4425e00 100644 --- a/controleurs/creerPartie_controleur.php +++ b/controleurs/creerPartie_controleur.php @@ -11,11 +11,13 @@ function rangDansPlateau(int $idplateau, int $rang) $idplateau . " AND rang = " . $rang)['instances']); } -function getCarteID(String $couleur, int $index) { +function getCarteID(string $couleur, int $index) +{ return get_infos_requete("SELECT idcarte FROM carte WHERE niveau = '" . $couleur . "'")['instances'][$index - 1]['idcarte']; } -function carteDansPlateau(int $idplateau, int $idcarte) { +function carteDansPlateau(int $idplateau, int $idcarte) +{ return !empty(get_infos_requete("SELECT idcarte AS nb FROM est_compose WHERE idplateau = " . $idplateau . " AND idcarte = " . $idcarte)['instances']); } @@ -30,7 +32,7 @@ function ajouterCartesAlea(string $couleur, int $nbCartesCouleurPartie, int $nbC $nbCartesJeu = get_infos_requete("SELECT nombre FROM cartes_jeu WHERE couleur = '" . $couleur . "'")['instances'][0]['nombre']; for ($i = 0; $i < $nbCartesCouleurPartie; $i++) { - $rang = 1; + $rang = rand(1, $nbCartes); while (rangDansPlateau($idplateau, $rang)) { $rang = rand(1, $nbCartes); } @@ -55,8 +57,6 @@ function creerPartie(int $nbCartesVertes, int $nbCartesOranges, int $nbCartesNoi $idplateau = $res['instances'][0]['idplateau']; - println("ID plateau : " . $idplateau); - $res = get_infos_requete("INSERT INTO partie (date_partie, horaire, etat, idplateau) VALUES (NOW(), NOW(), 'a venir', " . $idplateau . ") RETURNING idpartie"); @@ -67,20 +67,62 @@ function creerPartie(int $nbCartesVertes, int $nbCartesOranges, int $nbCartesNoi $idpartie = $res['instances'][0]['idpartie']; - println("ID partie : " . $idpartie); - ajouterCartesAlea("noire", $nbCartesNoires, $total, $idplateau); ajouterCartesAlea("orange", $nbCartesOranges, $total, $idplateau); ajouterCartesAlea("verte", $nbCartesVertes, $total, $idplateau); + + return $idpartie; +} + +function getJoueurs() +{ + return get_infos_instances("joueur")['instances']; } +function getJoueursPartie(int $idpartie) +{ + return get_infos_requete("SELECT * FROM joue JOIN joueur J USING(idjoueur) WHERE joue.idpartie = " . $idpartie)['instances']; +} +function ajouter_joueur(int $idpartie, int $idjoueur) +{ + $couleur = rand(0, 16777215); + executer_une_requete("INSERT INTO joue (idpartie, idjoueur, couleur_pion) VALUES (" . $idpartie . ", " . $idjoueur . ", " . $couleur . ")"); +} +function enlever_joueur(int $idpartie, int $idjoueur) +{ + executer_une_requete("DELETE FROM joue WHERE idpartie = " . $idpartie . " AND idjoueur = " . $idjoueur); +} +function valider_partie(int $idpartie, string $ordre) +{ + $joueurs = null; + switch ($ordre) { + case "honneurJeune": + $joueurs = get_infos_requete("SELECT * FROM joue JOIN joueur J USING(idjoueur) WHERE joue.idpartie = " . $idpartie . " ORDER BY annee_nais"); + break; + case "honneurNul": + $joueurs = get_infos_requete("SELECT idjoueur, COUNT(idjoueur) as nb_parties FROM joueur JOIN joue USING(idjoueur) WHERE idjoueur IN(SELECT idjoueur FROM joue WHERE idpartie=" . + $idpartie . ") GROUP BY idjoueur ORDER BY nb_parties"); + break; + case "aleatoire": + // TODO: vrai aléatoire + $joueurs = get_infos_requete("SELECT * FROM joue JOIN joueur J USING(idjoueur) WHERE joue.idpartie = " . $idpartie); + break; + default: + debug_log("How did we get there ?"); + break; + } + + for ($i = 1; $i <= sizeof($joueurs['instances']); $i++) { + executer_une_requete("UPDATE joue SET rang = " . $i . " WHERE (`idjoueur` = " . $joueurs['instances'][$i - 1]['idjoueur'] . ") and (`idpartie` = " . $idpartie . ");"); + } +} ?> \ No newline at end of file diff --git a/vues/creerPartie_vue.php b/vues/creerPartie_vue.php index 3bf704b..16ca38e 100644 --- a/vues/creerPartie_vue.php +++ b/vues/creerPartie_vue.php @@ -1,6 +1,7 @@ '; @@ -37,7 +39,7 @@ function afficher_formulaire() { $total += champs_cartes('nbCartesNoires', 'Nombre de cartes noires'); - if($total > 0) { + if ($total > 0) { echo '
Total : ' . $total . '
'; if ($total > 10) { echo '
Trop de cartes !!!!!!
'; @@ -50,28 +52,105 @@ function afficher_formulaire() { echo ''; } +function afficher_joueurs(int $idpartie) +{ + $joueurs = getJoueursPartie($idpartie); + echo '
'; + echo '

Joueurs :

'; + foreach ($joueurs as $joueur) { + $couleur_hex = dechex($joueur['couleur_pion']); + echo '

' . $joueur['pseudo'] . " (" . $joueur['prenom'] . " " . $joueur['nom'] . ')

'; + } + echo '
'; +} + +function formulaire_ajout_joueurs(int $idpartie) +{ + $joueurs = getJoueurs(); + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; +} + +function formulaire_suppression_joueurs(int $idpartie) +{ + $joueurs = getJoueursPartie($idpartie); + if (empty($joueurs)) + return; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; +} + +function formulaire_ordre_joueurs(int $idpartie) +{ + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; +} + ?>
-

Créer une partie

- - Erreur lors de la création de la partie. Veuillez contacter l'administrateur
"; - } else { - echo '
Partie en cours de création ...
'; - } - } else { - afficher_formulaire(); - } +

Créer une partie

+ + Erreur lors de la création de la partie. Veuillez contacter l'administrateur"; } else { - afficher_formulaire(); + echo '
Partie créée ! ID : ' . $idpartie . '
'; + formulaire_ajout_joueurs($idpartie); } - ?> + } else { + afficher_formulaire(); + } + } else if (isset($_POST['ajouterJoueur'])) { + $idpartie = (int) $_POST['idpartie']; + ajouter_joueur($idpartie, $_POST['joueur']); + afficher_joueurs($idpartie); + formulaire_ajout_joueurs($idpartie); + formulaire_suppression_joueurs($idpartie); + formulaire_ordre_joueurs($idpartie); + } else if (isset($_POST['enleverJoueur'])) { + $idpartie = (int) $_POST['idpartie']; + enlever_joueur($idpartie, $_POST['joueur']); + afficher_joueurs($idpartie); + formulaire_ajout_joueurs($idpartie); + formulaire_suppression_joueurs($idpartie); + formulaire_ordre_joueurs($idpartie); + } else if (isset($_POST['validerOrdre'])) { + valider_partie($_POST['idpartie'], $_POST['ordre']); + echo 'Le compte est bon !'; + } else { + afficher_formulaire(); + } + ?> + + \ No newline at end of file