IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

bloqué dans le jeu du morpion (débutant)


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut bloqué dans le jeu du morpion (débutant)
    Bonjour tout le monde !
    Je cherche depuis 5 jours je pense avoir fini à 95% mais je ne sais pas vraiment quoi chercher, je suis perdu ........
    J n'arrive pas à afficher les "X" ou les "0" dans les boutons
    j'imagine que ça se passe dans le foreach peut être avec des cookies mais je n'arrive pas à comprendre comment faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Function  for each buttons & reset the value of the current player
    function handleButtonClick($button_index) {
      if($_SESSION['game_state'][$button_index] === "") {
        $_SESSION['game_state'][$button_index] = $_SESSION['current_player'];
        foreach ($_POST as $key => $value) {
            setcookie($key, $value, time() + 8600);
     
          if ($value == '-') {
          }
              $_POST[$key] = $_SESSION['current_player'];
              if ($_SESSION['current_player'] == 'X') {
                setcookie($_POST[$key] , $_SESSION['current_player'], time()+3600);
               $value = $_SESSION['current_player'];
     
                  $_SESSION['current_player'] = 'O';
     
              } else {
                $_SESSION['current_player'] = 'X';
                setcookie($_POST[$key] , $_SESSION['current_player'], time()+3600);
                $value = $_SESSION['current_player'];
              }
                  $_POST[$key] = $_SESSION['current_player'];
     
              }
          }
         ;
        checkForWin(); 
        // toggleCurrentPlayer();
      }
    Je voudrais que ça s'affiche ici :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <form method="post">
    <table>
        <tr>
        <td> <button type="submit" name="button1" value="-">-</button></td>
        <td> <button type="submit" name="button2" value="-">-</button></td>
        <td><button type="submit" name="button3" value="-">-</button></td>
      </tr>
        <tr>
        <td><button type="submit" name="button4" value="-">-</button></td>
        <td> <button type="submit" name="button5" value="-">-</button></td>
        <td> <button type="submit" name="button6" value="-">-</button></td>
      </tr>
        <tr>
        <td> <button type="submit" name="button7" value="-">-</button></td>
        <td> <button type="submit" name="button8" value="-">-</button></td>
        <td> <button type="submit" name="button9" value="-">-</button></td>
     
      <input type="submit" name="reset" value="Reset">
      </tr>  
    </table> 
     
    </form>
    comment faire ? j'ai essayé 25 solutions mais rien ne fonctionne pourtant je sens que c'est très facile....

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    de quelle façon stockez vous les éléments du jeu ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    JE suis tellement perdu que j'aurais du mal à répondre à cette question
    je pense que c'est dans $_SESSION['current_player']
    et j'ai essayé de faire des cookies mais je ne comprends plus rien.................

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php 
    session_start();
    // Initialize the game X by default
    if(!isset($_SESSION['game_state'])) {
      $_SESSION['game_state'] = array_fill(0, 9, "");
      $_SESSION['current_player'] = "X";
    }
     
     
    ///test 
    for ($i = 1; $i <= 9; $i++) {
      if (isset($_POST['button'.$i])) {
          handleButtonClick($i-1);
     
          $_SESSION['current_player'] = $_POST['button'.$i];
        //   echo $_SESSION['current_player'];
     
      }
     
    }
    setcookie('current_player', $_SESSION['current_player'], time()+60*60*24);
     
     
    // Function  for each buttons & reset the value of the current player
    function handleButtonClick($button_index) {
      if($_SESSION['game_state'][$button_index] === "") {
        $_SESSION['game_state'][$button_index] = $_SESSION['current_player'];
        foreach ($_POST as $key => $value) {
            setcookie($key, $value, time() + 8600);
     
          if ($value == '-') {
          }
              $_POST[$key] = $_SESSION['current_player'];
              if ($_SESSION['current_player'] == 'X') {
                setcookie($_POST[$key] , $_SESSION['current_player'], time()+3600);
               $value = $_SESSION['current_player'];
     
                  $_SESSION['current_player'] = 'O';
     
              } else {
                $_SESSION['current_player'] = 'X';
                setcookie($_POST[$key] , $_SESSION['current_player'], time()+3600);
                $value = $_SESSION['current_player'];
              }
                  $_POST[$key] = $_SESSION['current_player'];
     
              }
          }
         ;
        checkForWin(); 
        // toggleCurrentPlayer();
      }
     
    // Function to check for wins & rules ----------------works-----
    function checkForWin() {
      $game_state = $_SESSION['game_state'];
      if(($game_state[0] === $game_state[1] && $game_state[1] === $game_state[2] && $game_state[0] !== "") || 
         ($game_state[3] === $game_state[4] && $game_state[4] === $game_state[5] && $game_state[3] !== "") ||
         ($game_state[6] === $game_state[7] && $game_state[7] === $game_state[8] && $game_state[6] !== "") ||
     
         ($game_state[0] === $game_state[3] && $game_state[3] === $game_state[6] && $game_state[0] !== "") ||
         ($game_state[1] === $game_state[4] && $game_state[4] === $game_state[5] && $game_state[1] !== "") ||
         ($game_state[2] === $game_state[5] && $game_state[5] === $game_state[8] && $game_state[2] !== "") ||
     
         ($game_state[0] === $game_state[4] && $game_state[4] === $game_state[8] && $game_state[0] !== "") ||
         ($game_state[2] === $game_state[4] && $game_state[4] === $game_state[6] && $game_state[2] !== "")
     
     
         ) {
        echo "Player " . $_SESSION['current_player'] . " wins!";
        session_destroy();
      }
    }
     
    // Function to toggle the current player------------not used but works-------------
    function toggleCurrentPlayer() {
      if($_SESSION['current_player'] === "X") {
        $_SESSION['current_player'] = "O";
      } else {
        $_SESSION['current_player'] = "X";
      }
    }
    //reset the game  -----------------------works-------------
    if(isset($_POST['reset'])) {
        resetGame();
      }
     
      function resetGame() {
        session_destroy();
        unset($_COOKIE['current_player']);
      }
    ?>
    <form method="post">
    <table>
        <tr>
        <td> <button type="submit" name="button1" value="-">-</button></td>
        <td> <button type="submit" name="button2" value="-">-</button></td>
        <td><button type="submit" name="button3" value="-">-<? $game_state[0]?></button></td>
      </tr>
        <tr>
        <td><button type="submit" name="button4" value="-">-<? echo $game_state[0]; ?></button></td>
        <td> <button type="submit" name="button5" value="-">-</button></td>
        <td> <button type="submit" name="button6" value="-">-</button></td>
      </tr>
        <tr>
        <td> <button type="submit" name="button7" value="-">-</button></td>
        <td> <button type="submit" name="button8" value="-">-</button></td>
        <td> <button type="submit" name="button9" value="-">-</button></td>
     
      <input type="submit" name="reset" value="Reset">
      </tr>  
    </table> 
     
    </form>

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    je pensais aux valeurs des cases qui sont dans $_SESSION['game_state']. vous pouvez utilisez cela pour afficher les boutons de jeux à l'aide de boucles
    ensuite quand vous utilisez une session php, le gestionnaire de session utilise un cookie par défaut donc vous n'avez rien à gérer du côté des cookies.

    avec tout ça, le code donne ça :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php
     
    session_start();
     
    // Initialize the game X by default
    if(!isset($_SESSION['game_state'])) {
      $_SESSION['game_state'] = array_fill(0, 9, "");
      $_SESSION['current_player'] = "X";
    }
     
     
    for ($i = 1; $i <= 9; $i++) {
      if (isset($_POST['button'.$i])) {
    	  handleButtonClick($i-1);
      }
    }
     
     
    // Function  for each buttons & reset the value of the current player
    function handleButtonClick($button_index)
    {
     
    	if ($_SESSION['game_state'][$button_index] === "") {
     
    		$_SESSION['game_state'][$button_index] = $_SESSION['current_player'];
     
    		checkForWin();
     
    		toggleCurrentPlayer();
     
    	}
     
     
    }
     
     
    // Function to check for wins & rules ----------------works-----
    function checkForWin() {
      $game_state = $_SESSION['game_state'];
      if(($game_state[0] === $game_state[1] && $game_state[1] === $game_state[2] && $game_state[0] !== "") ||
      	($game_state[3] === $game_state[4] && $game_state[4] === $game_state[5] && $game_state[3] !== "") ||
    	 ($game_state[6] === $game_state[7] && $game_state[7] === $game_state[8] && $game_state[6] !== "") ||
    	 ($game_state[0] === $game_state[3] && $game_state[3] === $game_state[6] && $game_state[0] !== "") ||
    	 ($game_state[1] === $game_state[4] && $game_state[4] === $game_state[5] && $game_state[1] !== "") ||
    	 ($game_state[2] === $game_state[5] && $game_state[5] === $game_state[8] && $game_state[2] !== "") ||
    	 ($game_state[0] === $game_state[4] && $game_state[4] === $game_state[8] && $game_state[0] !== "") ||
    	 ($game_state[2] === $game_state[4] && $game_state[4] === $game_state[6] && $game_state[2] !== "")
    	 ) {
    	echo "Player " . $_SESSION['current_player'] . " wins!";
    	session_destroy();
      }
    }
    // Function to toggle the current player------------not used but works-------------
    function toggleCurrentPlayer() {
      if($_SESSION['current_player'] === "X") {
    	$_SESSION['current_player'] = "O";
      } else {
    	$_SESSION['current_player'] = "X";
      }
    }
     
    //reset the game  -----------------------works-------------
      if (isset($_POST['reset'])) {
    	resetGame();
      }
     
      function resetGame() {
    	session_destroy();
      }
     
     
    ?>
    <form method="post">
    <input type="submit" name="reset" value="Reset">
     
    <table>
     
    	<?php foreach (range(1, 3) as $ligne) {?>
     
    		<tr>
     
    			<?php foreach (range(1, 3) as $colonne) {?>
     
    				<?php
    					$i = ($ligne - 1) * 3 + $colonne;
     
    					$affichage =
    						("" === $_SESSION['game_state'][$i - 1])
    						? "-"
    						: $_SESSION['game_state'][$i - 1]
    					;
     
    				?>
     
    				<td>
    					<button type="submit" name="button<?php echo htmlspecialchars($i);?>">
    						<?php echo htmlspecialchars($affichage);?>
    					</button>
    				</td>
     
    			<?php }?>
     
    		</tr>
     
    	<?php }?>
     
    </table>
    </form>

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    .. merci beaucoup ! il faut que je prenne le temps maintenant pour comprendre mon erreur de reflexion et tout le travail qui a été fait ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [68k] Jeu du Morpion : menu dans un fichier à part
    Par Sillas dans le forum Autres architectures
    Réponses: 1
    Dernier message: 28/12/2015, 19h19
  2. Bloqué dans le tuto PHP pour grand débutant
    Par jmtutu dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2012, 16h26
  3. petit bog dans mon jeu de morpion
    Par 123quatre dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2006, 11h10
  4. soumettre un formulaire contenu dans un jeu de cadre
    Par nicoulou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/06/2005, 21h50
  5. [LG]Un jeu du morpion
    Par yffick dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2003, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo