Petit probleme dans la creation d'un jeu [Résolu]

Signaler
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008
-
Slt tous le monde,

                   

                        ben voila je suis entrain de programmer un jeu
du style demineur, partiquement le meme principe.dans une fontion je
cree un tableau qui initialiser le nombre de serpents ( pour le moment
j'ai mis des X) choisi par le joueur, une autre fonction pour afficher
le tableau ( pour l'instant il est devoilé) et une troisieme pour qu'il
puisse faire son choix pour placer son pion, le programme principale
montre un maigre menu (comme le programme n'est pas opérationnel j'ai
le minimun.


                      bon je vous expose mon probleme qui est que apres
le 3eme affichage de mon tableau il affiche des conneries!! je sais pas
pourquoi j'ai tourné l'ordinateur dans tous les sens j'arrive pas a
trouve le probleme.

donc je vous demande votre aide pour elucide ce probleme! merci d'avance !!

    Jlion5


voila mon code source


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void ini_tab(int nbr)

{

     int i,j,g,chx1,chx2,chx3,let,Nb,MAX,MIN;

     char serp[15][15],lettre;

     MAX=nbr;

     MIN=1;

     srand(time(NULL));

     for(i=0;i<nbr;i++)

     for(j=0;j<nbr;j++)

     serp[i][j]='O';    

     Nb=0;

     do

     {

          i=(rand() % (MAX - MIN + 1)) + MIN;

          j=(rand() % (MAX - MIN + 1)) + MIN;

          if(serp[i][j]=='O')

          {     

                 serp[i][j]='S';

                 Nb++;

          }

     }while(Nb<nbr);

}

void dim_tab(int nbr)

{

     int i,j,g,chx1,chx2,chx3,let,ligne,Nb,MAX,MIN;

     char serp[15][15];

     g=0;

     let=65;

     printf("\n\n");

     printf("    ");

    

     for(i=0;i<nbr; i++)

     {   

          printf("| %#1c ",let);

          let=let+1;}

          printf("|\n");

          for (i=0; i <nbr*4+5;i++)

          {

              printf("_");

          }

          for (i=0;i<nbr;i++)

          {

              printf("\n");

              printf("%#3d |",g);

              g++;

              for(j=0;j<nbr;j++)

              {

                    printf(" %#1c |",serp[i][j] );

              }

     }

     g=0;

}

void placement_tab(int nbr)

{

     int i,j,col,g,chx1,chx2,chx3,let,ligne,Nb,MAX,MIN;

     char serp[15][15],choix[15][15],lettre;

     printf("\n\n");

     printf("\nquel colonne?\n");

     scanf("%d",&col);

     while(col<0 || col>nbr){

     if(col<0 || col>nbr)

     {

           printf(" tu ne comprend pas!!!\n");

           printf("choisis entre 0 et 4 pour les colonnes\n");

           scanf("%d",&col);}}

           printf("quel ligne?\n");

           scanf("%d",&ligne);

           while(ligne<0 || ligne>nbr){if(ligne<0 || ligne>nbr)

           {

                 printf(" tu ne comprend pas!!!\n");

                 printf("choisis entre 0 et 4 pour les lignes\n");

                 scanf("%d",&ligne);

           }

     }

     //stock la ligne voulue

     i=ligne;

     //stock la colonne voulue

     j=col;

     //a l'aide des deux données on positionne le pion

     serp[i][j]='X';

     }

main()



      int i,j,col,g,choix,chx1,chx2,chx3,ligne,Nb,nbr,MAX,MIN;

      char serp[15][15];

      printf("MENU\n");

      printf("1.Jeu\n");

      printf("2.Regle\n");

      printf("3.Cr\x82teaur\n");

      printf("4.Version\n");

do{

printf("quel niveau tu veux\n");

scanf("%d",&choix);

if (choix==1)

{printf("niveau 1");

nbr=5;

ini_tab(nbr);

dim_tab(nbr);}

else if (choix==2)

{printf("niveau 2");

nbr=10;

ini_tab(nbr);

dim_tab(nbr);}

else if (choix==3)

{printf("niveau 3");

nbr=15;

ini_tab(nbr);

dim_tab(nbr);}

else if (choix==4)

{printf("Merci de votre participation");

                 printf("\n");

                 printf("Au-revoir");

                 printf("\n");

                 system ("pause");

                 return 0;}

else

printf("Ne fais pas le debile suis les instructions");

}while(choix<1 || choix>4);

do{   

            placement_tab( nbr);

            dim_tab(nbr);

            printf("\ntu veux faire un autre choix?");

            scanf("%d",&choix);           

  } while(choix>4 || choix<4);

      printf("\n");

      system ("pause");

      return 0;

}

5 réponses

Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
Oo.Petit probleme.
Si c'est ce que je pense , declare char serp[15][15] en dehors des fonctions , en dessous des includes , et enleve ceux qu'il y a dans les fonctions.
Tu peu aussi le declarer dans le main et passer le pointeur en parametre :
int maint(){
int nbr;
char serp[15][15];
ta_fonction(nbr,serp);
}
ta_fonction(int nbr,char serp[5][5]){
serp[0][0] = 'X'; // apres tu peu l'utiliser comme tu veu
// serp[i][j] dans ton cas
}

voila.

Si l'informatique été de l'alcool il y aurait des genies partout
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
Salut.
Deja pour ton :
if (choix==1)
{printf("niveau 1");
nbr=5;
ini_tab(nbr);
dim_tab(nbr);}
else if (choix==2)
{printf("niveau 2");
nbr=10;
ini_tab(nbr);
dim_tab(nbr);}
else if (choix==3)
{printf("niveau 3");
nbr=15;
ini_tab(nbr);
dim_tab(nbr);}
else if (choix==4)
{printf("Merci de votre participation");
                 printf("\n");
                 printf("Au-revoir");
                 printf("\n");
                 system ("pause");
                 return 0;}
else
printf("Ne fais pas le debile suis les instructions");

Un switch serrait plus lisible.
Je ne vois pas le rapport entre ton menu et les actions qu'il y a derriere les saisies .
Ensuite tu utilise des tableau :
char serp[15][15];
Ceci dans plusieurs fonctions , seulement tu le redeclare a chaque fois , donc forcement il est vide ...
Je ne sais pas si c'est la ton probleme etant donné que la seule chose que je sache c'est que ca retourne "des conneries" ... Bref pourrais tu etre plus explicite ?
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

slt 
   ca retourne des connerie ce que je veux dire parle c'est que il y tout sorte de caractere du ASCII ( des cases vides,des symboles, des lettres, des chiffres). 
Desole pour illisibilité je l'ai un peu aéré mon programme j'ai vu aussi que mon tableau retourne ces conneries parce qu'il ne les conserve pas si je ne me trompe pas! donc il n'y aurai pas un moyen de conserver des donné du tableau???

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void ini_tab(int nbr)
{
     int i,j,let,Nb,MAX,MIN;
     char serp[15][15],lettre;
     MAX=nbr;
     MIN=1;
     srand(time(NULL));
     for(i=0;i<nbr+1;i++)
     for(j=0;j<nbr+1;j++)
     serp[i][j]='O';    
     Nb=0;
     do
     {
          i=(rand() % (MAX - MIN + 1)) + MIN;
          j=(rand() % (MAX - MIN + 1)) + MIN;
          if(serp[i][j]=='O')
          {     
                 serp[i][j]='S';
                 Nb++;
          }
     }while(Nb<nbr);
}
void dim_tab(int nbr)
{
     int i,j,g,let;
     char serp[15][15];
     g=0;
     let=65;
     printf("\n\n");
     printf("    ");
     for(i=0;i<nbr; i++)
     {   
          printf("| %#1c ",let);
          let=let+1;
     }
     printf("|\n");
     for (i=0; i <nbr*4+5;i++)
     {
          printf("_");
     }
     for (i=0;i<nbr;i++)
     {
          printf("\n");
          printf("%#3d |",g);
          g++;
          for(j=0;j<nbr;j++)
          {
                printf(" %#1c |",serp[i][j] );
          }
     }
     g=0;
}
void placement_tab(int nbr)
{
     int i,j,col,ligne;
     char serp[15][15];
     
     printf("\n\n");
     printf("\nquel colonne?\n");
     scanf("%d",&col);
     while(col<0 || col>nbr){
     if(col<0 || col>nbr)
     {
           printf(" tu ne comprend pas!!!\n");
           printf("choisis entre 0 et 4 pour les colonnes\n");
           scanf("%d",&col);}}
           printf("quel ligne?\n");
           scanf("%d",&ligne);
           while(ligne<0 || ligne>nbr){if(ligne<0 || ligne>nbr)
           {
                 printf(" tu ne comprend pas!!!\n");
                 printf("choisis entre 0 et 4 pour les lignes\n");
                 scanf("%d",&ligne);
           }
     }
     //stock la ligne voulue
     i=ligne;
     //stock la colonne voulue
     j=col;
     //a l'aide des deux données on positionne le pion
     serp[i][j]='X';
     }
main()

      int choix,nbr;
     
      printf("MENU\n");
      printf("1.Jeu\n");
      printf("2.Regle\n");
      printf("3.Cr\x82teaur\n");
      printf("4.Version\n");
do{
   printf("quel niveau tu veux\n");
   scanf("%d",&choix);
   if (choix==1)
   {
        printf("niveau 1");
        nbr=5;
        ini_tab(nbr);
        dim_tab(nbr);
   }
   else if (choix==2)
   {
        printf("niveau 2");
        nbr=10;
        ini_tab(nbr);
        dim_tab(nbr);
   }
   else if (choix==3)
   {
        printf("niveau 3");
        nbr=15;
        ini_tab(nbr);
        dim_tab(nbr);
   }
   else if (choix==4)
   {
        printf("Merci de votre participation");
        printf("\n");
        printf("Au-revoir");
        printf("\n");
        system ("pause");
        return 0;
   }
   else
   printf("Ne fais pas le debile suis les instructions");
}while(choix<1 || choix>4);
do{   
            placement_tab( nbr);
            dim_tab(nbr);
            printf("\ntu veux faire un autre choix?");
            scanf("%d",&choix);           
  } while(choix>4 || choix<4);
      printf("\n");
      system ("pause");
      return 0;
}
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
Messages postés
42
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
16 juin 2008

merci ccj pour ta reponse ca fonctionne maintenant, et aussi a tous ceux qui m'ont aidé