Probléme de partie dans un jeu

Eléphanteau du PHP | 12 Messages

10 août 2013, 15:19

Bonjour,

Lorsqu'on se connecte sur mon site, on est créditer de 15 parties seulement une fois par jour. Le but du jeu est de retrouver le nom du film à partir d'une image mais lorsqu'on veux jouer la première partie est obligatoirement perdu ce qui est plutôt gênant même si la réponse est bonne ensuite tout fonctionne si c'est bon on gagne sinon c'est perdu.

La page jeu

<?php
session_start();
 
include('includes/identifiants.php');
?>
 
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <title>Planet Pixel - le jeu du cinéphile et du gamer</title>
        <link rel="stylesheet" href="design/jeux.css" /> <!-- CSS -->
        <link rel="stylesheet" href="design/design_commun.css" /> <!-- CSS -->
    </head>
  
    <body>
    <?php include("includes/header.php"); ?>
     
    <?php include ("includes/menu.php"); ?>
     
    <p id="onglet">   <!-- Menu -->
        <a href="index.php" class="lien_menu">Accueil</a>
        <a href="blog.php" class="lien_menu">Blog</a>
        <a href="jeux.php" class="lien_menu" id="active">Jeux</a>
        <a href="boutique.php" class="lien_menu">Boutique</a>
        <a href="classement.php" class="lien_menu">Classement</a>
    </p>
    <div id="corps"> <!-- Centre du site -->   
     
    <?php
if(!empty($_SESSION['id']))
{
$id = $_SESSION['id'];
 
    $req=$bdd->query("SELECT partie FROM membre WHERE id='$id'");
    $donnees = $req->fetch();
     
    if($donnees['partie'] >= 1)
    {
    $partie = --$donnees['partie'] ;
    $req->CloseCursor();
     
    $requete=$bdd->query("UPDATE membre SET partie = '$partie' WHERE id = '$id'");
    $requete->CloseCursor();
     
        $req=$bdd->query('SELECT * FROM films ORDER BY RAND() LIMIT 1');
        $image = $req->fetch();
        {      
        echo '<center id="image"> <img alt="film" src="'.$image['lien'].'" />';
 
        $_SESSION['reponse_1'] = $image['reponse_1'];
        $_SESSION['reponse_2'] = $image['reponse_2'];
        }
        ?>
            <form method="post" action="partie_film.php">
            <p>
            <label for="film">Titre du film:</label> <br />
            <input type="text" name="film" id="film" required/> <br /> <br />
 
            <input type="submit" value="Valider" />
            </p>
            </form>
            </center>
    <?php
        $req->CloseCursor();
    } else { echo '<p id="partie">Vous n\'avez plus de partie pour aujourd\'hui!</p>'; }   
} else header('Location: jeux.php'); ?>
     
    </div>
    <?php include ("includes/footer.php") ; ?>
    </div>
    </body>
</html>
On vérifie si la réponse est bonne
<?php
session_start();
 
include('includes/identifiants.php');
 
if(isset($_POST['film']))
{  
    if($_POST['film'] == $_SESSION['reponse_1'] OR $_POST['film'] == $_SESSION['reponse_2'])
    {  
    $id = $_SESSION['id'];
    $pixel = $_SESSION['points']++;
     
    $req=$bdd->query("UPDATE membre SET points = '$pixel' WHERE id = '$id'");   
    $req->CloseCursor();
    }  
}
header('Location: jeux.php');
N'ayant toujours pas trouver le soucis, la solution qui est envisageable est de mettre 16 parties comme ça la première partie est perdu et on se retrouve à 15 mais si le membre se déconnecte entre temps, il reperd du coup encore 1 partie. Bref c'est compliqué et je trouve pas ça super.

Merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2013, 15:58

Je ne t'avais pas proposé une table pour gérer les images pour rien. ^^
Gérer des parties juste avec des points ce n'est pas assez évolué pour ce que tu veux faire.
Il te faut un historique des parties.

Eléphanteau du PHP | 12 Messages

10 août 2013, 16:39

Mais le problème est que si je dois mettre l'image en résolue alors les membres auront vite trouver toutes les images et je n'ai vraiment pas envie de faire ce genre de système certes ils auront parfois les mêmes images plusieurs fois mais par la suite ça pourrait être envisageable quand j'aurais énormément d'image.

Par contre, j'ai toujours le problème de la première partie qui est obligatoirement perdante.

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2013, 18:44

Si tu gères des sessions de jeu (avec 15 images par session) il n'y a rien qui t'empêche de retrouver la même image dans la session suivante.
Cela t'évitera même de retrouver la même image parmi les 15...

Eléphanteau du PHP | 12 Messages

10 août 2013, 19:45

Mais ça revient au même de ce que je fais actuellement sauf qu'il y a plus de chance d'avoir la même image mais j'aurais encore le même bug qu'actuellement c'est à dire la première partie perdante qui d'ailleurs je ne comprends pas pourquoi puisque les autres fonctionne parfaitement

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2013, 20:25

Ah non... Rien à voir avec ce que tu fais actuellement !
A moins que tu m'expliques comment tu distingues le fait de jouer telle ou telle session...

Eléphanteau du PHP | 12 Messages

10 août 2013, 21:09

Quand je veux dire le même fonctionnement c'est que ça génère tout simplement les images mais d'une autre façon. Et les sessions n'ont-il pas une durée de vie?

ViPHP
xTG
ViPHP | 7331 Messages

11 août 2013, 12:26

Je ne parle pas de session PHP, mais de session de jeu.
Une partie en 15 étapes si tu préfères.

Si tu ne veux pas obtenir des problèmes de conception de ce genre pour ton jeu tu ferrais mieux de le modéliser avec une méthode telle que UML par exemple.
En étudiant le jeu sous tous ses abords tu finiras par cerner tout ce qu'il te faut.

Eléphanteau du PHP | 12 Messages

11 août 2013, 20:42

D'accord, je vais me renseigner sur UML mais pour l'instant je laisse comme ça et je changerais plus tard.