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 :

Démineur en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 27
    Par défaut Démineur en PHP
    Bonjour.

    Je dois faire un jeu démineur en php.
    J'ai fais les 3 premières fonctions :

    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
    $tab = array();
     
    function xyToz($size, $x, $y)
    {
       return $size * $x + $y;
    }
     
    function init($size, &$tab)
    {
        $nb_bomb = ($size * $size) / 5;
        for ($i = 0; $i < $nb_bomb; ) {
            $x = rand(0, $size - 1);
            $y = rand(0, $size - 1);
            if ($tab[xyToz($size, $x, $y)] === '*')
                continue;
            $tab[xyToz($size, $x, $y)] = '*';
            $i++;
        }
    }
     
    function print_tab($size, $tab)
    {
        echo "__";
        for ($index = 0; $index < $size; $index++) {
            echo "_";
        }
        echo "\n";
        for ($x = 0; $x < $size; $x++) {
            echo "|";
            for ($y =0; $y < $size; $y++) {
                if ($tab[xyToz($size, $x, $y)] === '*') {
                    echo "*";
                } else {
                    echo " ";
                }
            }
            echo "|\n";
        }
        echo "__";
        for ($index = 0; $index < $size; $index++) {
            echo "_";
        }
        echo "\n";
    }
    Mais je bloque sur la fonction qui permettra de compter les mines autour :

    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
    function NbMinesAutour($tab) 
    {
        while ($tab[$x][$y] != '*'){
          $n=0; 
             if($tab[$x-1][$y-1] === true){
                     $n++; 
                   } else
              if ($tab[$x-1][$y] === true){
                     $n++;   
                   } else
              if ($tab[$x-1][$y+1] === true){
                     $n++;     
                   } else
              if ($tab[$x][$y-1] === true){
                     $n++;     
                   } else
              if ($tab[$x][$y+1] === true){
                     $n++;     
                   } else
              if ($tab[$x+1][$y-1] === true){
                    $n++;   
                   } else
              if ($tab[$x+1][$y] === true){
                    $n++;   
                   } else
              if ($tab[$x+1][$y+1] === true){
                   $n++;  
                  } 
         }    
    }
    Pour tester mes codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $size = 8;
    print_tab($size, $tab);
    init($size, $tab);
    print_tab($size, $tab);
    NbMinesAutour($tab);
    J'ai besoin de votre aide. Surtout pour la fonction NbMinesAutour. Des pistes si possible ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu ne nous as pas dit quel était ton problème.

    Toutefois NbMinesAutour n'a pas de valeur de retour, elle ne fait donc rien actuellement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 27
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu ne nous as pas dit quel était ton problème.

    Toutefois NbMinesAutour n'a pas de valeur de retour, elle ne fait donc rien actuellement.
    J'ai le tableau avec les mines. J'aimerais mettre des chiffres autour des mines : les compter. Voilà mon problème. Normalement, la fonction NbMinesAutour devrait le faire ...

    D'accord pour la valeur de retour, je rajoute donc un return $n mais bon ça ne change pas vraiment le problème :/

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme te l'indique Spartacusply, $x et $y ne sont pas définis dans ta fonction.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 27
    Par défaut
    Merci pour vos conseils. J'ai donc changé mon code :

    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
    function NbMinesAutour($tab, $x, $y) 
    {
        while ($tab[$x][$y] != '*'){
          $n=0; 
             if($tab[$x-1][$y-1] === true){
                     $n++; 
                   } else
              if ($tab[$x-1][$y] === true){
                     $n++;   
                   } else
              if ($tab[$x-1][$y+1] === true){
                     $n++;     
                   } else
              if ($tab[$x][$y-1] === true){
                     $n++;     
                   } else
              if ($tab[$x][$y+1] === true){
                     $n++;     
                   } else
              if ($tab[$x+1][$y-1] === true){
                    $n++;   
                   } else
              if ($tab[$x+1][$y] === true){
                    $n++;   
                   } else
              if ($tab[$x+1][$y+1] === true){
                   $n++;  
                  }       
         }  
         return $n;
    }
    Mais ça ne fonctionne toujours pas :/

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux être plus précis que "ne fonctionne pas" ?
    Que devrais-tu obtenir ? Qu'obtiens-tu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Le (les) erreurs sont assez flagrantes. Il n'y a pas à utiliser des elseif dans ton cas vu que les tests doivent toujours être effectués.

    Utiliser une boucle for serait aussi bien plus judicieux.

    Et ta boucle while, à quoi sert-elle exactement ?

  8. #8
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Déjà, je vois mal pourquoi tu passes ton tableau en paramètre de la fonction NBminesautour, a priori il faudrait mieux passer une case :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function NbMinesAutour($abs,$ord) {
     
    }

Discussions similaires

  1. [EDI] Quel est l'éditeur que vous recommandez pour PHP ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 400
    Dernier message: 10/04/2018, 21h08
  2. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 08h45
  3. L'avenir est-il au PHP ?
    Par Manolo dans le forum Langage
    Réponses: 468
    Dernier message: 11/02/2008, 19h54

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