Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1661 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [resolut|C] Le jeu de la vie: cellules adjacentes

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolut|C] Le jeu de la vie: cellules adjacentes

n°2099623
jkiller19
Posté le 05-09-2011 à 14:20:58  profilanswer
 

Bonjour everybody,
 
j' essaie de développer un jeu de la vie en c sous code block je crois que mon compilateur c'est mingw, pour l’ instant je doit trouver le nombre de cellules vivantes adjacentes pour ensuite définir le statu de la case( se qui n'est pas encore fait ^^" ).
 
Le problème c'est que quand je recherche le nombre de cellule vivante adjacente  la variable retourne des nombres cohérents et d'autre impossibles:  
 

Spoiler :

le mapping des cellules vivantes a gauche et a droite le nombre de cellules vivantes adjacentes
 
1 0 0 0 0 0 0 0 0 0     1971555541 1 0 0 0 0 0 0 0 1  
0 0 0 0 0 0 0 0 0 0     -772628758 1 0 0 0 0 0 0 0 9
0 0 0 0 0 0 0 0 0 0     -2 0 1 0 1 0 0 0 0 2  
0 0 0 1 0 0 0 0 0 0     1971882230 0 1 0 1 0 0 0 0 1972054368  
0 0 0 0 0 0 0 0 0 0     4200372 0 2 1 1 0 0 0 0 0  
0 0 0 0 0 0 0 0 0 0     10 0 0 0 0 0 0 0 0 2130567168
0 0 0 0 0 0 0 0 0 0     1972054368 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0    0 0 0 0 0 0 0 0 0 2686824  
0 0 0 0 0 0 0 0 0 0   4201526 0 0 0 0 0 0 0 1 4198582
0 0 0 0 0 0 0 0 0 1    0 0 0 0 0 0 0 0 1 0  


 
Le code en entier:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int cell[10][10];// initialisation de la carte de jeu
  6.     int x=0;
  7.     int y=0;
  8.     //initialisation des cellules
  9.     for (y = 0 ; y < 10 ; y++)
  10.     {
  11.         for (x = 0 ; x < 10 ; x++)
  12.         {
  13.             cell[x][y]=0;
  14.             printf("%d",cell[x][y]);
  15.         }
  16.         printf("\n" );
  17.     }
  18.     printf("\n" );
  19.     //chois des des cellules vivantes
  20.     cell[9][9] = 1;
  21.     cell[3][3] = 1;
  22.     cell[0][0] = 1;
  23.     //affichage des cellules
  24.     for (y = 0 ; y < 10 ; y++)
  25.     {
  26.         for (x = 0 ; x < 10 ; x++)
  27.         {
  28.             printf("%d ",cell[x][y]);
  29.         }
  30.         printf("\n" );
  31.     }
  32.     printf("\n" );
  33.     //calcule du nombre de cellule adjacente
  34.     int adj = 0 ;
  35.     for (y = 0 ; y < 10 ; y++)//boucle pour parcourir le tableau
  36.     {
  37.         for (x = 0 ; x < 10 ; x++)
  38.         {
  39.             adj = 0 ;// variable pour stocker les resultat
  40.             if(y-1>=0 && x-1>=0)// Ces conditions servent à ne pas sortir du tableau
  41.             {
  42.                 adj=adj+cell[x-1][y-1];
  43.             }
  44.             if(y-1>=0)
  45.             {
  46.                 adj=adj+cell[x][y-1];
  47.             }
  48.             if(x-1>=0)
  49.             {
  50.                 adj=adj+cell[x-1][y];
  51.             }
  52.             if(y-1>=0 && x+1<10)
  53.             {
  54.                 adj=adj+cell[x+1][y-1];
  55.             }
  56.             if( x+1<10)
  57.             {
  58.                 adj=adj+cell[x+1][y];
  59.             }
  60.             if( y+1<10 && x+1<10)
  61.             {
  62.                 adj=adj+cell[x+1][y+1];
  63.             }
  64.             if(y+1<10)
  65.             {
  66.                 adj=adj+cell[x-1][y+1];
  67.             }
  68.             if(x-1>=0 && y+1<10)
  69.             {
  70.                 adj=adj+cell[x+1][y-1];
  71.             }
  72.             printf("%d ",adj);
  73.         }
  74.         printf("\n" );
  75.     }
  76.     return 0;
  77. }


 
Je vois pas d'où sortent ces nombres, et comment résoudre se problème,
question auxiliaire  :whistle: je trouve que la partie sur le calcule de la cellule adjacente trop long mais je sais pas comment la raccourcir, si vous avez une idée.
 
Merci ;)


Message édité par jkiller19 le 05-09-2011 à 19:58:27
mood
Publicité
Posté le 05-09-2011 à 14:20:58  profilanswer
 

n°2099628
gilou
Modérateur
Modzilla
Posté le 05-09-2011 à 14:52:34  profilanswer
 

Tu n'as pas la bonne approche IMHO:
Tu fais un tableau 12x12 qui inclus les bords, qui auront toujours une valeur a 0. Tu calcules ton tableau adj pour un indice x et y variant de 1 à 10.
Tu as alors une seule formule unique à appliquer.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2099629
jagstang
Pa Capona ಠ_ಠ
Posté le 05-09-2011 à 15:00:06  profilanswer
 

d'où sortent ces nombres ? A tout hasard tu lis à un mauvais endroit dans la mémoire (hors de ton tableau) ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°2099630
shaoyin
Posté le 05-09-2011 à 15:01:33  profilanswer
 

Dans ton approche, les lignes 76 et 80 sont incorrectes au niveau des indices:
ligne 76 => cell[x][y+1] au lieu de cell[x-1][y+1]
ligne 80 => cell[x-1][y+1] au lieu de cell[x+1][y-1]
 
Les indices que tu mettais te faisaient sortir du tableau.


Message édité par shaoyin le 05-09-2011 à 15:01:52
n°2099708
jkiller19
Posté le 05-09-2011 à 19:55:41  profilanswer
 

Merci tout le monde ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [resolut|C] Le jeu de la vie: cellules adjacentes

 

Sujets relatifs
[C#/.NET]Exception 0x8007007E et import de dll[C] Problème fscanf avec string
C++ Fermer l'execution d'un fichier.[C] : Problème avec la fonction system
[ C# ] ListView qui consomme un maxSpécial pack-->telecharger des cours complets de: C,C++,JAVA,GTK,Linux
problème sur tableau C++compter des cellules en couleur
Communication PHP / C++ via un socket UNIX => blocage read/write 
Plus de sujets relatifs à : [resolut|C] Le jeu de la vie: cellules adjacentes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR