DÉMINEUR

top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010 - 2 avril 2005 à 03:45
xplosif59 Messages postés 1 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 9 mars 2007 - 9 mars 2007 à 01:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30463-demineur

xplosif59 Messages postés 1 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 9 mars 2007
9 mars 2007 à 01:25
Salut salut, je passe juste pour te demandé si tu pouvais m'envoyé le .exe (jsuis une merde... ça fait 2jours que j'essaye de compilé et j'y arrive pas -_-) voila voila ^^ si tu veux bien mon adresse est max59tyl@hotmail.fr (j'éspére que tu regardes encore ici ça fait plus de 2 ans et demi quand même :s)

Merci :-).
niteowl Messages postés 8 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 janvier 2008
20 mars 2006 à 21:55
en fait on peut marquer une case d'une drapeau, prends donc la peine de lire l'aide (le ? à gauche du smiley) ;)
wesh2k2 Messages postés 31 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 12 octobre 2012
17 mars 2006 à 12:00
C'est parfait mais je met que 7 parceke normalement on peut mettre des drapeaux sur les mines ca evite d'avoir a rematter toutes les cases pour savoir où on a deja detecter une mine.
Quand on double clic sur une case qui a deja toutes ses mines marquées ca découvre son entourage aussi
glork Messages postés 29 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 17 février 2006
27 avril 2005 à 21:23
C beau
mais personne va jouer ce genre de jeu :P (trop classique)
7|10
niteowl Messages postés 8 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 janvier 2008
4 avril 2005 à 16:01
top30, merci beaucoup pour la police ! je cherchais comment faire, c'est impeccable !

je n'ai pas encore testé ton code, mais merci pour ta contribution.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
4 avril 2005 à 12:59
PS :
Tu as inclus la police au Zip. Mais avec Flash, c est pas vraiment comme avec Xpress. Tu peux incrustrer la police à ton doc "Fla" sans que personne n est à se soucier d'installer la police. Pour ceci tu dois :
- Dans la bibliothèque, créer une nouvelle police, puis lui indiquée une ID de liaison.
- Dans tes champs textes, tu choisis la police ayant pour nom l'identifiant de liaison ( celle avec un asterix indiquant que c'est une police exportée ).

C est tout !
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
4 avril 2005 à 10:23
Salut...
Pour t'aider un peu. Les scripts qui buggent dans ta prog, sont les scripts qui comme "attribuer_mines()" font appel à des boucles "while".
Dans le font tu n'as pas tort, puisque plus ou moins cela se passe comme suit :
Tu commence par un "i" à 0 tant que ce "i" est inférieure au nombre de mines à distribuer, tu répètes la boucle qui dit que si la case n'a pas de mine, tu lui en attribue un et augmente "i", et que si la case en a une, ne rien faire !
Le problème est LA ! Si la case n'as pas de mine.. OK ! Mais si en a une ne fait RIEN. Si tu commence à mettre un nombre élever de mine, la boucle reste plus 256 fois sans rien faire puisque chque fois que la boucle détermine une mine, celle-ci a deja une mine !
Si tu a 10 mines pour 100 cases la boucle fonctionne sans gros problemes, mais si tu as 20 mines pour 25 cases, ca plante ! Tu suis ?
T'as solution :
Faire un tableau "casesCopiees" de toutes les cases du jeu, et un tableau vide "tableauMines. Puis tant que la longueur de "tableauMines" est inférieure au nombre de mine à poser, tu "SPLICE" un élément de "casesCopiees" AU HAZARD et l'insére dans "tableauMine". A chaque boucle, "casesCopiees" diminue, et ainsi tu ne peux "splicer" deux fois la même case !!!! = )
Une fois "tableauMines" déterminer, il ne te reste plus qu'à attribuer une mine à chacune des cases en faisant partie.

C'est beaucoup plus simple que ca n'en a l'air ! :

/*********** grille ***********/
function Affiche() {
// var
profondeur = 20; // profondeur de départ pour les clips "carrés"
num_case=0; // numero de la case, utilisé pour attribuer mine
xDep = posXdep; // positionnement x de départ
yDep = 75; // positionnement y de départ
xPlus = largCarre; // espacement x entre les carrés
yPlus = largCarre; // espacement y entre les carrés
// génération de la grille
// TOP30 --------------------
var lesCases = new Array () ;
//---------------------------
for (i=0; i<hauteur; i++) {
for (j=0; j<largeur; j++) {
// TOP30 --------------------
var uneCase = _root.attachMovie("c_carre", "case_"+i+"-"+j, profondeur);
lesCases.push ( uneCase ) ;
//---------------------------
this["case_"+i+"-"+j]._x = xDep;
this["case_"+i+"-"+j]._y = yDep;
this["case_"+i+"-"+j].x = i;
this["case_"+i+"-"+j].y = j;
this["case_"+i+"-"+j].mine = 0;
this["case_"+i+"-"+j].decouv = 0;
this["case_"+i+"-"+j].gotoAndStop("defaut");
xDep += xPlus;
profondeur++;
num_case++;
}
xDep = posXdep;
yDep += yPlus;
}
// TOP30 --------------------
attribuerMine( lesCases );
//---------------------------
}
// place les mines ------------------------------------------------------------------
function attribuerMine( casesCopiees ){
// TOP30 --------------------
var casesMinees = new Array () ;
while ( casesMinees.length < nb_mines ) {
var hazard = Math.floor( Math.random()*casesCopiees.length ) ;
var caseCoupee = casesCopiees.splice ( hazard, 1 )[0] ; // Splice renvoyant un tableau...
caseCoupee.mine = 1 ;
grille_mines[hazard] = "ok" ;
casesMinees.push ( caseCoupee ) ;
}
//---------------------------
}

J'ai fait le test avec un tableau de 100 cases et 95 mines, ca marche !
Pour le reste, c est vrai que ca marche, mais je penses que tu devrais "attribuer" la valeur d'indication du nombre de mine autour d'une case A LA CREATION ( ou distribution des mines ) et non comme tu le fait, par vérification des voisins au clic sur une case !

j espère t'avoir aider par mes explications super claires ( il est 9H00 du mat exucse moi )...
Sur ce je te laise je vais à la plage...
A plus !
niteowl Messages postés 8 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 janvier 2008
4 avril 2005 à 09:43
bug corrigé et source renvoyée
Blacknight91titi Messages postés 1732 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 9 mars 2015 2
3 avril 2005 à 13:22
Un très bon travail que tu as réaliser.
J'ai cependant constater un bug.
Si on découvre une mine on est sensé avori perud mais on peut continuer a cliquer sur les autres cases et ainsi gagnée.
9/10
niteowl Messages postés 8 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 janvier 2008
3 avril 2005 à 00:35
merci, ça me fait plaisir, d'autant que c'est ma 1e source sur ce site ^_^

j'ai essayé de la fignoler un maximum avant de la poster.
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
2 avril 2005 à 12:31
On remarque un certain professionnalisme: tu as inclus la police avec. Ca, c'est un reflexe de maquettiste et ca mérite toutes mes salutations.
En tout cas, trés bon travail!
WhiteMagus Messages postés 764 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 5 février 2010
2 avril 2005 à 09:31
Joli. Le concept est compris et le code respectable.
bravo.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
2 avril 2005 à 03:45
Bien scinder
[9/10]
Rejoignez-nous