Accueil > Forum > > > > Recursivité du démineur
Recursivité du démineur
jeudi 26 mai 2005 à 10:13:31 |
Recursivité du démineur

missmagou
|
Bonjour à tous, Voila je suis en train de faire un ptit démineur en vb mais je bloque sur un ptit probleme: quand le joueur click sur une case vide, celle ci doit découvrir les autres cases vides aux alentours mon soucy c'est que je n'y arrive pas, je vois pas du tt comment je peux faire. Merci
|
|
jeudi 26 mai 2005 à 10:21:54 |
Re : Recursivité du démineur

econs
|
Attention, ceci est du pseudocode. J'espère qu'il est suffisamment lisible. Il faut faire attention au bordures de ton tableau dans le calcul des variables indiceCaseAuDessus, indiceCaseADroite, indiceCaseAuDessous, indiceCaseAGauche. Mais au moins, tu as là la description de la récursivité.
Sub DecouvreCase(indiceCase As Long) Decourvrir la case d'indice indiceCase If nombreDeMinesVoisines(indiceCaseAuDessus) = 0 Then DecouvreCase indiceCaseAuDessus End If If nombreDeMinesVoisines(indiceCaseADroite) = 0 Then DecouvreCase indiceCaseADroite End If If nombreDeMinesVoisines(indiceCaseAuDessous) = 0 Then DecouvreCase indiceCaseAuDessous End If If nombreDeMinesVoisines(indiceCaseAGauche) = 0 Then DecouvreCase indiceCaseAGuche End If End Sub Manu ------------------------------------------- Une question bien posée, c'est une chance de réponse bien adaptée.
|
|
jeudi 26 mai 2005 à 10:35:16 |
Re : Recursivité du démineur

3615jenveux
|
Comme tu l'évoque, il faut utiliser la récursivité (une fonction ou une routine qui s'appelle elle-même). Ecrit une fonction dans laquelle : Le principe est de tester la case cliquer (est-ce que elle est vide et que l'on peut l'effacer). Et ensuite tu teste toutes les cases a côté (soit 8), et si un de ces 8 tests est positif, tu rapelle la fonction (alors que tu est déjà dans ta fonction). Cette fonction ce déclenchera donc un nombre de fois plus ou moins important, et ainsi tu sera certain de passer en revue toutes les cases.
Voici une possibilité : Attention le code découle aussi de la manière dont tu gère les choses. Moi j'avais des controles bouton groupé qui faisaient les cases. J'avais donc une fonction me permettant de passer du numéro d'index d'un bouton a des coordonnées x et y (CoordonnéesCaseJ), et une fonction inverse NoCaseJ. Xmap et Ymap sont les bords du jeu. IndiceY et IndiceX sont des variables me permettant de calculer en coordonnées les 8 cases adjacente d'une case (IndiceY(0)=0, IndiceX(0)=1,IndiceY(1)=1,IndiceX(1)=0,IndiceY(2)=0,IndiceX(2)=-1,...)
Private Sub Gangrène(No As Integer) ' procédure récurcive ' algo effacant ttes les cases vide conjointe lorsque le joueur ' clique sur l'une d'entre elles Dim Cycle3 As Integer ' for Dim t(1) As Integer ' contient les coordonnées 0=>y, 0=>x Dim DécalageCaseTampon As Integer ' tampon contenant successivement les no des 4 cases cardinale adjacente a celle en cours d'analyse For Cycle3 = 0 To 7 t() = CoordonnéesCaseJ(No, Xmap, Ymap) ' converti le no de case en coordonnées t(0) = t(0) + IndiceY(Cycle3) ' coordonnées case adjacente en y t(1) = t(1) + IndiceX(Cycle3) ' coordonnées case adjacente en x DécalageCaseTampon = NoCaseJ(t(1), t(0), Xmap, Ymap) ' converti les coordonnées en n° de case If DécalageCaseTampon <> -1 Then ' on est pas en dehors de la map If ValeurCase(DécalageCaseTampon) = 0 And CaseJ(DécalageCaseTampon).Visible <> False Then ' une autre case conjointe est vide (sauf si c'est une case déjà effacé) If Cycle3 <= 3 Then ' seulement les 4 coordonnées cardinales pour effacer les cases CaseJ(DécalageCaseTampon).Visible = False ' rendre invisible le bouton Call Gangrène(DécalageCaseTampon) ' appel récursif de la procédure End If Else CaseJ(DécalageCaseTampon).Caption = ValeurCase(DécalageCaseTampon) ' affiche les chiffres dans les cases conjointes aux cases vides End If End If Next Cycle3 End Sub
Bon courage !
|
|
jeudi 26 mai 2005 à 11:52:58 |
Re : Recursivité du démineur

missmagou
|
Tout d'abord merci pour vos réponses. Econs: j'ai bien compris ton code mais quand on clique sur une case, cela va me balayer uniquement les 8 cases vides qui sont autours et pas toutes les autre cases vides autour non?(je c pas si je me suis bien expliquée dsolée) 3615jenveux: est ce que ton code correspond uniquement à la procedure gangrene si oui, c'est possible d'appeler cette procedure à l'interieure d'elle mm?(la encore je c pas si ma question est comprehensible ms c vrai que j'ai un peu de mal à m'expliquer sorry) En tt les cas merci à tous les 2 d'avoir pris du tps pr me repondre
|
|
jeudi 26 mai 2005 à 11:55:39 |
Re : Recursivité du démineur
|
jeudi 26 mai 2005 à 17:33:04 |
Re : Recursivité du démineur

missmagou
|
excuse 3615jenveux j suis un peu à l'ouest ces tps ci dc oublie ma question un peu idiote lol et merci pour ton code ca correspond à ce que je cherchais
|
|
Cette discussion est classée dans : démineur, recursivité, ptit
Répondre à ce message
Sujets en rapport avec ce message
2 ptit KesTiOns [ par H@lloWin___HiA ]
SAlutComment extrait on un bitmaps d'un .RESj'ai une image que je veux extrairePrivate Sub Form_Load()Picture1.Picture = LoadResData(101, "Bitmaps")En
J'propose un ptit module [ par Setaou ]
=> Un chtit module "Génétique" + un autre "Copulation" (ca va de pair :)J'me propose de faire les deux puisque c'est très étroitement lié .Alors, comm
ptit boulo pour ptit graphiste [ par | - BLAFARD - | ]
ca interresserait qlqun de faire des dessins pour un petit jeu que je suis en train de pondre ?y faudrait faire des dessins animes en 2D toute mignone
un ptit PB avec les tableau [ par Djer13 ]
bon voilà je debute, et G appris un peu de basic, avant de me faire les dent sur le C++. Fort de mes 3-4 connaissance je me lance dans la création d'u
Ptit prob avec DataReport [ par bumba ]
Salut,En fait, j'ai un problème avec le DataReport, il n'y a pas moyen d'introduire un DataSource ou un DataMember, donc il ne veux pas non plus s'ouv
Besoin d'un ptit peu d'aide! [ par Crazyblinkgirl ]
Salut!Je voudrais comparer un entier que lutilisateur tape dans un textbox(var2) avec une autre contenue dans une base(var3) ainsi : if(var2>var3) the
Ptit pb avec les ActiveX [ par Starter ]
J'aimerai savoir si je suis un cas isoler ou non, mais l'ActiveX que j'ai developper avec VB, n'est compatible qu'avec VB.Si qqun sait comment faire p
un ptit coup de main serai le bien venu !! [ par bouboussjunior ]
je voulais savoir comment obtenir dans la barre d'outil des icones tels que progressbar, winsocks, ...je sais c pas grand chose mais sa m'aiderai bien
pb utilisation DTPICKER avec date [ par tibops ]
bsalut j'utilise un DTPICKEr, pour avoir un ptit calendrier pour choisir un date, cepedant je n'arrive a y afficher la date du systeme quand je elance
Aidez un ptit lamez du VB siouplé [ par Tomair ]
Bon Voila...c'est débile et tout simple mais j'ai juste besoin de savoir comment inclure une variable de type integer ou autre dans un champ string...
Livres en rapport
|
Derniers Blogs
PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|