AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 [Javascript] Remplissage par diffusion

Aller en bas 
3 participants
AuteurMessage
Ancestral
Utilisateur confirmé: Rang *
Ancestral


Messages : 227

[Javascript] Remplissage par diffusion Empty
MessageSujet: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion EmptySam 8 Nov 2014 - 15:07

Bonjour, j'ai un peu avancé dans la programmation de mon démineur mais me voila de nouveaux confronté à un problème.
J'aimerais que lorsque le joueur appuie sur une case vide, toutes les cases vide aux alentours de cette case se dévoilent également. J'ai donc pensé à un Algorithme de remplissage par diffusion. J'ai donc essayé le premier algorithme présenté sur la page wikipedia mais évidemment comme indiqué:
"La formulation récursive précédente, si elle possède l'avantage d'être intuitive par sa formulation, est souvent inemployée en pratique, en particulier dans des environnements d'exécution où la pile d'appel des fonctions est fortement contrainte ou réduite. Il convient alors de créer sa propre pile dans laquelle seront stockés les pixels à explorer. L'algorithme pour la variante 4-connexe est alors le suivant :"
Code:
remplissage4(pixel, colcible, colrep)
 début
   Soit P une pile vide
   si couleur(pixel) ≠ colcible alors sortir finsi
   Empiler pixel sur P
   Tant que P non vide
   faire
     Dépiler n de P
     couleur(n) ← colrep
     si couleur(n nord) = colcible alors Empiler n nord sur P finsi
     si couleur(n sud)  = colcible alors Empiler n sud  sur P finsi
     si couleur(n est)  = colcible alors Empiler n est  sur P finsi
     si couleur(n ouest)= colcible alors Empiler n ouest sur P finsi
   fintantque
 fin
Je me suis donc tenté à la rédaction de ce 2nd algorithme en javascript mais j'ai un peu de mal à le comprendre. Quelqu'un pourrait-il m'expliquer ce système de pile pour m'aider à transcrire cette algorithme?(faut-il utiliser un tableau dans lequel on empilerait des variables??). J'avoue être un peu perdu
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Javascript] Remplissage par diffusion Empty
MessageSujet: Re: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion EmptySam 8 Nov 2014 - 16:06

Une pile c'est un stack.
C'est à dire que quand tu ajoute une valeur, il se trouve en haut de la pile.
Quand tu lis une valeur, ça te lira la valeur tout en haut du stack - La dernière insérée.
Perso, j'utilise la récursivité dans ce cas (Plus simple) mais sous GM par ex il y a une récursivité max, ensuite le programme plante.
Revenir en haut Aller en bas
Ancestral
Utilisateur confirmé: Rang *
Ancestral


Messages : 227

[Javascript] Remplissage par diffusion Empty
MessageSujet: Re: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion EmptySam 8 Nov 2014 - 16:24

Merci pour ta réponse, oui en effet j'ai dabbord essayé d'utiliser la récursivité mais le programme plante.
D'où l'interet que je porte a la seconde methode (celle qui consiste a creer soi-même sa pile).
Si j'ai bien compris donc, concretement, la pile (ou stack du coup) peut etre modélisée par un array donc ?

Ah j'oubliais, que représente n dans l'algorithme ci-dessus ?
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[Javascript] Remplissage par diffusion Empty
MessageSujet: Re: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion EmptySam 8 Nov 2014 - 16:51

La cellule.

Si ça t’intéresse, j'avais fait un démineur y a un moment sous GM:
http://host-a.net/u/onilink_/demineur1script.gm6
http://host-a.net/u/onilink_/Demineurs2d3d4d_engines.rar
Revenir en haut Aller en bas
Ancestral
Utilisateur confirmé: Rang *
Ancestral


Messages : 227

[Javascript] Remplissage par diffusion Empty
MessageSujet: Re: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion EmptySam 8 Nov 2014 - 17:02

Merci, pour vos reponses je commence à entrevoir la petite lumier blanche au bout du tunnel.super
Merci aussi pour tes exemples en GML ca m'a l'air deja un peu plus concret. Je vais y jeter un oeil et peut etre essayer de m'en inspirer pour mon projet.
Revenir en haut Aller en bas
Contenu sponsorisé





[Javascript] Remplissage par diffusion Empty
MessageSujet: Re: [Javascript] Remplissage par diffusion   [Javascript] Remplissage par diffusion Empty

Revenir en haut Aller en bas
 
[Javascript] Remplissage par diffusion
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] [Javascript] Tableau à 2D
» Insuffisance des primitives lors du remplissage.
» [javascript/php]explorateur de fichiers personalisé
» Truc débile javascript
» [Librairie JavaScript] GameBuilder

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: