begin process at 2012 05 28 20:25:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Démineur en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Démineur en C

mercredi 25 octobre 2006 à 14:03:14 | Démineur en C

tenev911

Bonjour, j'ai un petit probleme qui me bloque quand je veux faire un démineur en C (pour mon DUT informatique) :

On veut faire un démineur, on ne sais pas en avance où sont placés les bombes dans le tableau.
Si le joueur tombe sur un bombe "POUF! Perdu", sinon le joueur à un numéro qui correspond au nombre de cases adjacentes qui n'ont pas de bombe (contrairement au démineur windows où là, le démineur compte le nombre de case où il y a une bombe dans les cases adjacentes).

Mon probleme vient du faite de calculer ces nombres qui entour les bombes.
Voici ce que je voulais faire au début :

On a un tableau de 5x5 avec des 0 et 1, les 0 correspondent aux endroit sans bombe et les 1 aux endroits avec bombe.

Par exemple
0|0|0|0|1|
0|1|0|1|0|
0|0|0|0|0|
0|0|1|0|0|
0|0|0|0|0|

Pour chaque case, si on a une case 0, on ajoute 1 en haut, haut-gauche,haut-droite,droite, etc...

Ceci devrait marcher parfaitement MAIS par exemple, si on est dans la premiere case, on ne peux pas ajouter 1 en haut, haut-droite, haut-gauche, gauche et bas-gauche.

Si quelqu'un a une solution sachant qu'il ne faut pas un code trop buggé et que c'est sensé etre fait avec une table a deux dimensions.

Merci
mercredi 25 octobre 2006 à 14:13:57 | Re : Démineur en C

tenev911

"Pour chaque case, si on a une case 0, on ajoute 1 en haut, haut-gauche,haut-droite,droite, etc..."

Escusez moi je me suis trompé :

Si on est une case 0, alors on compte le nombre de 0 adjacent et on le met dans la case.

Mais comme tout a l'heure, le meme probleme : On dépasse du talbeau
mercredi 25 octobre 2006 à 15:40:50 | Re : Démineur en C

goast_tu

Réponse acceptée !
ben supposons que t'as un tableau
int field[10][10];

pour calculer le nombre de cases qui n'ont pas de bombes (marquées avec un 0)  autour de la case (X,Y) on peut tout simplement faire

int count_not_bomb=-1; //car la case X,Y est prise en compte
for(i=(X=0)?X:X-1; i<(X=9)?X:X+1; i++)
   for(j=(Y=0)?Y:Y-1; j<(Y=9)?Y:Y+1; j++)
      if( !field[i][j]) count_not_bomb++;


j'ai supposé qu'au prealable on a verifié que la case (X,Y) est bien a 0

Trafic web gratuit!!!
mercredi 25 octobre 2006 à 17:15:25 | Re : Démineur en C

moumouteb

Membre Club
Réponse acceptée !
Si ça t'interesse j'ai moi aussi fait un démineur je peux te donner la source si ça t'interesse.
sinon moi je tester le nombre de mine et voici les test de chaque case environnente



            if((nX+1)<NB_CASE_L&&(nY-1)>=0&&(ntInit[nX+1][nY-1]!=MINE))
                    ntInit[nX+1][nY-1]++;
           

            if((nX+1)<NB_CASE_L&&(ntInit[nX+1][nY]!=MINE))
                    ntInit[nX+1][nY]++;
           

            if((nX+1)<NB_CASE_L&&(nY+1)<NB_CASE_H&&(ntInit[nX+1][nY+1]!=MINE))
                    ntInit[nX+1][nY+1]++;
           

            if((nX-1)>=0&&(nY-1)>=0&&(ntInit[nX-1][nY-1]!=MINE))
                    ntInit[nX-1][nY-1]++;
           

            if((nX-1)>=0&&(ntInit[nX-1][nY]!=MINE))
                    ntInit[nX-1][nY]++;
           

            if((nX-1)>=0&&(nY+1)<NB_CASE_H&&(ntInit[nX-1][nY+1]!=MINE))
                    ntInit[nX-1][nY+1]++;
           

            if((nY-1)>=0&&(ntInit[nX][nY-1]!=MINE))
                    ntInit[nX][nY-1]++;
           

            if((nY+1)<NB_CASE_H&&(ntInit[nX][nY+1]!=MINE))
                    ntInit[nX][nY+1]++;


On regarde pour chaque case si elle est bien dans le tableau et que ce n'est pas déja une mine dans ce cas on ajoute un (car il y a une mine adjaxante en plus). Il suffit que tu fasses l'inverse et de rajouter le baillayage de toutes les cases (donc deux boucles for avec pour variable dans mon cas : nX et nY).
--------------------
Quand la merde vaudra de l'or les pauvres naitrons sans trou du cul. Coluche.
Mon projet : Squirrel's Cliff
dimanche 5 novembre 2006 à 14:27:43 | Re : Démineur en C

tenev911

Merci :)

Perso j'avais trouvé un solution mais il fallait que je teste 9 cas différents


Cette discussion est classée dans : case, gauche, haut, démineur, bombe


Répondre à ce message

Sujets en rapport avec ce message

Case démineur ? [ par MoDDiB ] Voila j'aimerai faire des cases comme le démineur de windows avec action si l'on clique etc le probleme c'est que je ne sais pas du tout comment faire deplacement avec les fleches ? [ par Djedie ] je dois faire 1 prog genre pacman ou snakeet j aimerai faire le deplacement avec les flecheshaut bas gauche droite.j aimerai faire 1 ptit sous prog po En haut a gauche [ par Magicking ] Regardez en haut a gauche que voit-on le logo cppfrance mais en regardant + attentivement derriere on voit du Visual Basic...Et je vois po le rapport switch....case [ par cabarrus ] salut !!je veux un programme qui demande l'âge, puis qui affiche un message selon l'âge frappé en utilisant switch...case.voici mon programme mais j'a défiler texte haut en bas [ par m1111 ] Je cherche à faire défiler du texte de haut en bas ou de bas en haut pr faire un générique. Je sais pas du tt comment m'y prendre alors si qq'un pouva pb avec un labyrinthe [ par skinia ] je suis sur un projet de labyrinthe et j'ai bloqué pour l' algorithme du plus court chemin (entre un pt qq du labyrinthe et la cible au milieu).le lab switch ... case [ par didrocks ] J'ai un problème est mon case:int n=App->run; // dépendant de la partie du programme en cours switch(n); { case 1: // intro { App->BmpDeFond = App-> ASCII-Navigation par fleche [ par Twinuts ] Salut a tous,j'ai un souci avec les touches directionnelles du clavier, en gros c'est la premiere fois que je les utilise et je ne vois pas pourquoi c API Win32, problème de variable [ par bouba ] Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM Haut bas [ par ranouf ] je presente l'affaire g un menu :[ ] menu 1[ ] menu 2[x]menu 3[ ] menu 4mon but c que lorsque que j'appuie sur la touche fleche haut le x monte et des


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 26,099 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales