Ben ecoute sincèrement j'ai réussi à le faire marcher
je te remercie honnetement d'avoir pris le temps de lire mon code("merdique" ) et de m'avoir depatouiller aussi rapidemment
sincèrement un grand merci à toi Sve@r
tu penses que ce serait abuser que de t'envoyer l'autre partie de mon programme où j'ai des soucis??
Je le fais et si personne répond c'est pas grave...qui tente rien n'a rien
j'ai un pb d'algo j'arrive pas à parcourir ma liste chainer comme je le souhaite...
En fait mon projet c'est de faire le démineur en C avec des listes chainées.... j'aurai préféré en statique perso ;-)
mon soucis se situe au niveau de ma fonction jeu... dans cette partie l'utilisateur entre un numero de case, moi je veux rechercher cette case puis regarder si elle contient une mine ou pas... si oui le joueur a perdu si non je recherche toute les cases qu'il y a autour (mon alogo est super lourd à ce niveau!!) et je compte le nombre de mines que j'affiche dans la case que le joueur a choisi....
ça compile ça plante pas mais j'affiche jamais la valeur...
mon code entier fait 500lignes (moi et l'optimisation ça fait 4!!) je fais comment je poste tout ou juste les fonctions nécessaire sachant que je sais pas si vous me comprendrez (j'ai une logique bien à moi..lol)
voilà les fonctions sus citées:
/******************************************************************************
Fonction recherche d'un maillon
Description : Cette fonction a pour but de rechercher un maillon afin de savoir
si il a une bombe ou pas
******************************************************************************/
int recherchermaillonmines(T_maillon *p, int numero_maillon)
{
while (p != NULL)
{
if (p->numero == numero_maillon)
{
if (p->mines == -1)
{
return 0 ;
}
else
return (-1) ;
}
else
p = p->suiv ;
}
}
/******************************************************************************
Fonction recherche d'un maillon
Description : Cette fonction a pour but de rechercher un maillon afin de donner la valeur
du nombre de mines qu'il y a autour de lui
******************************************************************************/
int recherchermaillonautre(T_maillon *p, int num_maillon,int taille)
{
int cpt=0,j,k,l,m;
while (p != NULL)
{
if (p->numero == (num_maillon))
if (p->mines == -1)
printf("\n\t\tVous avez perdu!!!\n\n" );
else
{
if(num_maillon==0)
{
if(recherchermaillonmines(p, num_maillon+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille)==0)
cpt++;
printf("le compteur vaut: %d\n",cpt);
return (p+num_maillon)->mines == cpt;
}
if(num_maillon==(taille*taille)-1)
{
if(recherchermaillonmines(p, num_maillon-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
for(j=1;j<taille;j++)
{
if(num_maillon==((taille*taille)-1)-j)
{
if(recherchermaillonmines(p, num_maillon-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille-1)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
}
for(k=1;k<taille;k++)
{
if(num_maillon==k)
{
if(recherchermaillonmines(p, num_maillon-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille-1)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
}
for(l=1;l<taille;l++)
{
if(num_maillon==((taille*taille)-1)-taille*l)
{
if(recherchermaillonmines(p, num_maillon-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille-1)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
}
for(m=1;m<taille;m++)
{
if(num_maillon==taille*m)
{
if(recherchermaillonmines(p, num_maillon+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille+1)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
}
if(recherchermaillonmines(p, num_maillon+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon-taille-1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille+1)==0)
cpt++;
if(recherchermaillonmines(p, num_maillon+taille-1)==0)
cpt++;
return (p+num_maillon)->mines == cpt;
}
return (-1) ;
}
p = p->suiv ;
}
/******************************************************************************
Fonction affichage des valeurs
Description : Cette fonction va afficher la valeur de la case voulue par l'utilisateur
******************************************************************************/
int jeu (T_maillon *p,int taille)
{
int num,cpt_nb_coup;
do
{
printf("Entrez le numero de la case:\n" );
scanf("%d",&num);
recherchermaillonautre(p,num,taille);
Afficherliste(p,taille);
}while ((cpt_nb_coup!=(taille*taille)-bomb));
if(cpt_nb_coup==(taille*taille)-bomb)
printf("Vous avez Gagnez!!!\n" );
}
si qq un a du courage je l'en remercie par avance... promis c'est mon dernier soucis!!