Démineur

Fermé
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 5 janv. 2008 à 12:53
 loulou - 20 mars 2008 à 12:08
Bonjour,
J'ai un projet démineu à faire et je patine complètement pour commencer. J'ai bien compris les règles du jeu mais je n'arrive pas à commmencer, je ne vois pas comment initialiser une grille avec des mines. Comment puis je faire? C'est avec la fonction rand mais je ne vois pas comment faire.
D'abord j'initialise la focntion avec des 0?
Puis comment faire pour mettre les mines?
J'ai trouvé ce message sur le forum mais je ne sais pas à quoi correspond le s.


"Salut.
Pour commencer il faut définir une matrice (un tableau à double entrée quoi) Ensuite, tu places des mines aléatoirement dans cette matrice.
Rand est une fonction aléatoire entre 0 et 1.
tu parcour chaque case, si Rand>s tu met une mine, sinon tu n'en met pas.
s>0.5 sinon, le jeu deviens impossible (variable de 'niveau')
je te conseil ensuite de mettre 9 dans les cases ou tu décide de mettre une mine. Ensuite tu reparcour le tableau et pour chaque case tu regarde le nombre de mine voisine. Ce nombre est compris en 0 et 8 (d'où le 9 qd tu as une mine).
Ton plateau est près.
Ensuite, il ne te reste plus qu'à explorer ! Soit par souris soit en renrtant les coordonée au clavier."
Aidez moi par pitié!
J'utilise DEV C++

5 réponses

Utilisateur anonyme
5 janv. 2008 à 14:17
il a du taper trop vite , s => si
0
didy_gwatinik
5 janv. 2008 à 14:21
Mais ca ne colle pas si Rand>si
0
Utilisateur anonyme
5 janv. 2008 à 14:24
Mais S est une entrée de valeur numérique.
C'est comme si on disait nbvoitures=30
0
didy_gwatinik
5 janv. 2008 à 14:28
Ok c'est ce j'avais compris mais quand je fais le pocédé mes mines ne se mettent que vers le début sur les quatres dernières lignes je n'ai aucune mines, c'est un pénible. Comment je pourrais y remédier?
Ce code là est-il correct??
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
tab[i][j]=rand( )%2;
if ((tab[i][j]>0.5) && (mine<10))
{
tab[i][j]=9;
mine++;
}
else{tab[i][j]=0;}
}
}
0
Utilisateur anonyme
5 janv. 2008 à 15:07
J'en sai rien...je suis en train d'apprendre le CPP.
va faloir attendre que quelqu'un qui sache réponde.
0
J-pec > Utilisateur anonyme
26 févr. 2008 à 00:23
J'arrive peut etre un peu tard pour répondre, mais d'autres pourrons peut etre en profiter...

Je suis en fait en train de programmer ce petit programme en C...

Ton problème vient évidement de ton utilisation de la fonction rand, qui retourne un nombre compris entre 0 et plusieurs centaines de milliers (j'ai plus le chiffre exacte en tête). Grâce à ton modulo (%) qui retourne le reste d'une division entière(ici une division par 2 ) , tu restreins ce nombre à 0 ou 1, c'est tout...
Donc dans ton programme, la valeur de tab[i][j] aura, à chaque valeur de i et j, 1 chance sur 2 de ne pas être une bombe, et 1 chances sur 2 d'en être... à ce rythme, pas étonnant que les bombes apparaissent rapidement (pense que si tu as une grille de 10 sur 10, soit 100 cases, avec 10 bombes, tu devrais en fait avoir 1 chance sur 10 environs par case d'avoir une bombe, et non 1 chance sur 2) ...

Je pense que tu utilise en fait une mauvaise tactique. Une bonne tactique (c'est a peut près celle que j'emploie) se trouve ici: http://www.commentcamarche.net/forum/affich 1352896 remplissage de bombes tableau pour demineur

Voila, je ne sais pas si j'ai pu aidé quelqu'un, mais je n'avais rien d'autre à faire ce soir ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nul !!!
0