pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008
-
16 avril 2008 à 17:12
pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008
-
23 avril 2008 à 01:50
Bonjour !
Alors voilà, je dois créer un démineur en C pour mes études. Bon j'ai bien avancé, mais je bloque sur un truc débile !
Je ne vois pas comment faire pour savoir qu'on a gagné, quel test effectuer en fait (ça doit être super simple mais je trouve pas lol).
Pour savoir si je perd c'est simple, c'est quand je tombe sur une mine (pour moi la valeur -1)... mais pour savoir si j'ai gagné je vois pas.
Dans mon programme, je demande au joueur de rentrer les coordonnées d'une case... et j'effectue l'opération jusqu'à ce que le joueur perde (et dans ce cas j'affiche un message ainsi que la grille). Mais il faudrait que je redemande ceci jusqu'à ce que le joueur perde, OU jusqu'à ce qu'il gagne.
Donc voilà, si quelqu'un pouvait me dire quel test effectuer ça serait cool :) Merci d'avance !
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 16 avril 2008 à 17:21
Salut
C'est simple de savoir si on a gagne: tu connais le nombre de cases totales, le nombre de mines, il suffit donc d'incrementer une variable a chaque nouvelle case decouverte et tu peux faire ton test.
pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008 21 avril 2008 à 16:15
Re!
Je suis désolé, mais je n'arrive pas à le faire. Je vois l'idée mais je n'arrive pas à l'écrire en fait. Cela m'embête vraiment de bloquer sur un truc aussi simple (à priori). Je dois le rendre bientôt et je sais pas quoi faire donc je mets un lien sur ce que j'ai fait (c'est la version de base, elle fonctionne il manque juste ça).
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 21 avril 2008 à 19:24
OK ca a marcher, j'ai eu du mal a déchiffrer l'image
Bon tu peux créer une variable NbCaseDecouverte initialiser a 0 que tu passeras en parametre (l'adresse bien sur)a la fonction resoudre puis a la fonction affichecasevide. Tu l'incrementes a chaque fois que tu decouvres une case et dans ton main tu n'as plus qu'a faire ton test: if(NbCaseTot-NbCaseDecouverte-NbMine==0)printf("GAGNER\n");
pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008 21 avril 2008 à 20:06
Ok donc si j'ai bien compris (que je fasse pas de bétises lol) je dois faire ça :
Dans mon main je crée une variable int NbCaseDecouverte; Ensuite dans les fonctions resoudre et affichecasevide je rajoute en paramètre &NbCaseDecouverte et je l'incrémente chaque fois que je découvre une case en mettant NbCaseDecouverte++;
Je fais mon test dans le main et c'est bon.
C'est bien ça ?
Je te remercie beaucoup de ton aide en tout cas :)
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 21 avril 2008 à 23:17
Pour ton code essaye ca:
.......
affiche_case_vide(d,l,c,nbl,nbc,nb_case_decouverte); nb_case_decouverte est un pointeur =>pas besoin de &
}
else
{
d[l][c].affiche=true;
*nb_case_decouverte+=1; //ATTENTION si tu mets *nb_case_decouverte++, tu incremente le pointeur pas la variable pointé.
}
return(0);
}
void affiche_case_vide(Demineur d, int l, int c, int nbl, int nbc, int *nb_case_decouverte)
{
d[l][c].affiche=true;
* nb_case_decouverte+=1;
pitidragon
Messages postés27Date d'inscriptionjeudi 28 février 2008StatutMembreDernière intervention21 mai 2008 23 avril 2008 à 01:42
Bonsoir !
Bon, tout fonctionne, ma version de base (niveau facile), ainsi que ma 1ère évolution (différents niveaux + un mode personnalisé). Mais (il y a toujours un mais...) j'ai un petit soucis, que je ne comprend absolue pas, enfin c'est super bizarre. Je m'explique :
Pour tester mon jeu, je lance une partie en mode perso, taille 20x20 avec 0 mines. Je devrais donc avoir que des cases vides, ben non !
Sur ma 1ère ligne, aux colonnes 8, 9 et 10, j'ai la valeur 1 au départ (et donc s'il y a des mines à côtés dans une partie normale j'ai un décalage de +1).
J'ai beau cherché je vois pas d'où ça vient cette chose ! Ce bug est constaté dans la version que j'ai posté sur un message précédent. Si quelqu'un veux bien y jeter un oeil ça serait très gentil parce que je n'y comprend rien lol !
ps : j'aurais besoin dun peu d'aide pour avancer, un petit conseil, mais je demanderais quand j'aurais réglé ça :)