la création de la partie

This commit is contained in:
2024-04-16 23:25:57 +02:00
parent 281fa483e8
commit 5a29785672
2 changed files with 148 additions and 27 deletions

View File

@@ -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 . ");");
}
}
?>

View File

@@ -1,6 +1,7 @@
<?php
function champs_cartes($nom, $titre) {
function champs_cartes($nom, $titre)
{
$nbCartes = 1;
@@ -27,7 +28,8 @@ function champs_cartes($nom, $titre) {
return (int) 0;
}
function afficher_formulaire() {
function afficher_formulaire()
{
$total = 0;
echo '<form class="formulaire_partie" method="post" action="#">';
@@ -50,6 +52,63 @@ function afficher_formulaire() {
echo '</form>';
}
function afficher_joueurs(int $idpartie)
{
$joueurs = getJoueursPartie($idpartie);
echo '<div>';
echo '<p>Joueurs : </p>';
foreach ($joueurs as $joueur) {
$couleur_hex = dechex($joueur['couleur_pion']);
echo '<p style="color:#' . $couleur_hex . ';">' . $joueur['pseudo'] . " (" . $joueur['prenom'] . " " . $joueur['nom'] . ')</p>';
}
echo '</div>';
}
function formulaire_ajout_joueurs(int $idpartie)
{
$joueurs = getJoueurs();
echo '<form class="ajouter_joueurs_partie" method="post" action="#">';
echo '<select id="joueurs" name="joueur">';
foreach ($joueurs as $joueur) {
echo '<option value="' . $joueur['idjoueur'] . '">';
echo $joueur['pseudo'] . " (" . $joueur['prenom'] . " " . $joueur['nom'] . ')</option>';
}
echo '</select>';
echo '<input type="submit" name="ajouterJoueur" value="Ajouter un joueur" />';
echo '<input type="hidden" name="idpartie" value="' . $idpartie . '" />';
echo '</form>';
}
function formulaire_suppression_joueurs(int $idpartie)
{
$joueurs = getJoueursPartie($idpartie);
if (empty($joueurs))
return;
echo '<form class="enlever_joueurs_partie" method="post" action="#">';
echo '<select id="joueurs" name="joueur">';
foreach ($joueurs as $joueur) {
echo '<option value="' . $joueur['idjoueur'] . '">';
echo $joueur['pseudo'] . " (" . $joueur['prenom'] . " " . $joueur['nom'] . ')</option>';
}
echo '</select>';
echo '<input type="submit" name="enleverJoueur" value="Enlever un joueur" />';
echo '<input type="hidden" name="idpartie" value="' . $idpartie . '" />';
echo '</form>';
}
function formulaire_ordre_joueurs(int $idpartie)
{
echo '<form class="enlever_joueurs_partie" method="post" action="#">';
echo '<select id="ordre" name="ordre">';
echo '<option value="aleatoire">Aléatoire</option>';
echo '<option value="honneurJeune">Honneur au plus jeune</option>';
echo '<option value="honneurNul">Honneur au moins expériementé</option>';
echo '</select>';
echo '<input type="submit" name="validerOrdre" value="Mettre en place la partie" />';
echo '<input type="hidden" name="idpartie" value="' . $idpartie . '" />';
echo '</form>';
}
?>
@@ -61,17 +120,37 @@ function afficher_formulaire() {
if (isset($_POST['creerPartie'])) {
$total = (int) $_POST['nbCartesVertes'] + (int) $_POST['nbCartesOranges'] + (int) $_POST['nbCartesNoires'];
if ($total <= 10) {
$res = creerPartie($_POST['nbCartesVertes'], $_POST['nbCartesOranges'], $_POST['nbCartesNoires']);
if($res === false){
$idpartie = creerPartie($_POST['nbCartesVertes'], $_POST['nbCartesOranges'], $_POST['nbCartesNoires']);
if ($idpartie === false) {
echo "<div>Erreur lors de la création de la partie. Veuillez contacter l'administrateur</div>";
} else {
echo '<div>Partie en cours de création ...</div>';
echo '<div>Partie créée ! ID : ' . $idpartie . '</div>';
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();
}
?>
</div>