Partage
  • Partager sur Facebook
  • Partager sur Twitter

demineur c++

Sujet résolu
    1 septembre 2007 à 22:09:15

    Salut.

    Je me suis mis a codé un jeu de demineur en c++, le jeu est pratiquement terminé. Mais la j'ai un problem pour decouvrir toutes les cases égal a zero adjacentes a celle que le joueur découvre(c'est pas très bien formulé désolé :D ). Pour l'instant je n'arrive qu'a découvrir celle qui sont sur la même ligne(horizontale et verticale).
    Je vous met le bout de code qui pose problem.


    1. if( grille[posclic.x][posclic.y] == 0)
    2.             {
    3.     for(int c = 1; c < 9 ; c++)
    4.     {
    5.     if(!(posclic.y-c < 0) && grille[posclic.x][posclic.y-c] == 0 && zero[0] != true)
    6.     grille_actuel[posclic.x][posclic.y-c] = oui;
    7.     else
    8.     zero[0] = true;
    9.         if(!(posclic.x+c > 7) && grille[posclic.x+c][posclic.y] == 0 && zero[1] != true)
    10.         grille_actuel[posclic.x+c][posclic.y] = oui;
    11.     else
    12.     zero[1] = true;
    13.         if(!(posclic.y+c > 7) && grille[posclic.x][posclic.y+c] == 0 && zero[2] != true)
    14.         grille_actuel[posclic.x][posclic.y+c] = oui;
    15.     else
    16.     zero[2] = true;
    17.         if(!(posclic.x-c < 0) && grille[posclic.x-c][posclic.y] == 0 && zero[3] != true)
    18.     grille_actuel[posclic.x-c][posclic.y] = oui;
    19.     else
    20.     zero[3] = true;
    21.     }
    22.     for(int i = 0;i<4;i++)
    23.     zero[i] = false;
    24.             }



    Je vois pourquoi sa ne marche pas mais pas comment faire pour que sa marche :( .
    Donc si quelque pouvais me donné un conseil.
    merci d'avence.
    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2007 à 0:02:13

      Tu peux le faire de manière récursive :

      1. Tu crées une fonction qui prend comme paramètres les coordonnées d'une case.
      2. Tu l'appelles avec les coordonnées de la case sur laquelle tu as cliqué, qui n'est entourée d'aucune mine.
      3. Pour les 8 cases entourant cette case : 
      4.         Si la case n'a jamais été cliquée :
      5.                 On compte le nombre de mines qui l'entourent.
      6.                 Si ce nombre de mines > 0 :
      7.                         On dévoile la case avec ce nombre.
      8.                 Sinon (case de nouveau non entourée par une mine)
      9.                         On dévoile la case.
      10.                         On rappelle la fonction avec les coordonnées de la nouvelle case
      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2007 à 0:33:44

        Merci pour ta réponse.
        J'ai fais comme tu m'a dit sa marche inpec.

        • Partager sur Facebook
        • Partager sur Twitter

        demineur c++

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown