begin process at 2013 05 19 16:01:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > AS3 - PRINCIPE ET APPLICATION DE FONCTION RÉCURSIVE

AS3 - PRINCIPE ET APPLICATION DE FONCTION RÉCURSIVE


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :recursif, grille, interaction, AS3, pathfinder Niveau :Initié Date de création :26/11/2011 Vu / téléchargé :3 953 / 117

Auteur : pegase31

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Principe de base :
Une grille représente un terrain.
L'utilisateur active/désactive les cases en cliquant dessus.
L'interaction d'une case ne doit être rendu possible que si elle se trouve à côté d'une autre cases et que toutes les cases sont connectées entre elles.

Solution :
Pour ce qui est de l'activation d'une case, c'est très simple : vérifier qu'au moins une case limitrophe est activée.
La désactivation est plus difficile, car il ne faut pas rompre une chaîne et éviter de créer plusieurs groupes de cases.
Là intervient l'utilisation de fonction récursive.

La fonction récursive :
C'est une fonction qui s'appelle elle-même.
Elle se déclenche à chaque case activée et se propage aux autres cases qui l'entoure.
- Le principe est de créer un tableau logique vide de taille équivalente à l'aire de jeu
- Trouver la première case active
- Tester les 4 cases autours de cette case, puis de lancer une fonction sur chaque case active trouvée.
Ce principe va se propager comme une trainée de poudre en activant logiquement les cases testées.
Il ne restera qu'à comparer le tableau obtenu à celui existant et de voir si toutes les cases correspondent.

un exemple :
partons donc du principe que nous avons le schéma de base suivant.
[img]http://www.enystemple.net/pegase/te mp/flashkod/recursif01.png[/img]
Tout d'abord, on part d'une grille de taille équivalente, mais vide ("test" dans le code)
1. La première case trouvée est la case 5. On l'active (noir), teste les cases autours. Seule la case 10 est active dans le tableau de référence (vert)
2. Une fonction est alors lancée sur la case 10 (qui est activée). Elle cherche aussi les cases alentours. la case 5 ayant déjà été testée, on ne la re-teste pas. La case 11 est donc lancée.
3. Tout comme dans l'étape précédente, mais sur la case 11. il en ressort la case 12.
4. La case 12 est testée, et deux cases sont alors actives. Soit deux chemins A et B
5. A (case 7) et B (case 17) sont donc testés chacune par une fonction, les cases 8 et 18 sont lancées en test.
6. Le test de la case 8 ne donne aucune case à tester et c'est donc la fin du chemin A. Le chemin B fait tester la case 23.
7. Le chemin B ne lance plus aucune fonction et se termine donc.
8. Le schéma résultant est donc comparé à celui de base. Ils correspondent et est donc valide !

Un autre exemple nous montre qu'amputé de la case 18, le schéma ne correspond plus :
[img]http://www.enystemple.net/pegase/temp/flas hkod/recursif02.png[/img]

La fonction récursive permet donc de tester le groupement des cases et détermine si toutes les cases sont interconnectées ou pas.


 Conclusion

Ce principe, simple au départ est utilisé pour déterminer si un labyrinthe est résoluble ou pas. Le point de départ étant l'entrée et la case d'arrivée devant être active après le test.

Il s'agit aussi de la base des pathfinders, permettant de trouver le chemin le plus court entre deux points. Mais il est loin d'être fonctionnel pour cette utilisation dans l'état actuel.

Amusez-vous avec et faites surtout attention aux dépassement de piles éventuels ;)

Peg'

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN
Source avec Zip Source avec une capture AS3 - SIMULATION DE GRILLE D'ÉDITION
Source avec Zip DECODEUR/ENCODEUR DE PLAYLIST AU FORMAT PLS/M3U
Source avec Zip Source avec une capture BOUTON DE VOLUME
Source avec Zip Source avec une capture SNOW FLAKES AS3 (CS4)

 Sources de la même categorie

TRANSFERT DE DONNÉES FLASH <-> PHP - PETITE SUBTILITÉ AVEC J... par Loubiou
Source avec Zip LECTURE DE TEXTE "VOICE" par yasdar
Source avec Zip Source avec une capture UN PACKAGE "HISTORIC" POUR GÉRER VOS COMMANDES par top30
Source avec Zip Source avec une capture AS3 - SIMULATION DE GRILLE D'ÉDITION par pegase31
Source avec Zip CONSTANTE D'OBJET INMODIAFIABLE ET DÉBLOQUABLE par top30

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AGAL PARSER par mousman
TRANSFERT DE DONNÉES FLASH <-> PHP - PETITE SUBTILITÉ AVEC J... par Loubiou
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN par pegase31
Source avec Zip Source avec une capture AS3 - SIMULATION DE GRILLE D'ÉDITION par pegase31

Commentaires et avis

Commentaire de top30 le 29/11/2011 09:46:46

Je signale que pour bien comprendre l'exemple de Peg, qu'il faut surtout essayer de "désactiver" les cases du chemin créér.

A l'activation, la récursivité n'est pas forcément utile. Mais pour désactiver une case si !

Commentaire de pegase31 le 29/11/2011 11:37:40 administrateur CS

Oui, l'ajout est simple à valider, il suffit de vérifier si une des 4 cases autours est active ou pas.
Le soucis se situe lors de la suppression d'une case. Pour simplifier le code, je n'ai pas séparé les deux actes, afin de ne pas embrouiller le tout (la solution récursive fonctionnant dans les deux cas).

Peg'

Commentaire de top30 le 02/12/2011 16:18:48 8/10

Ca déprime aussi peu de commentaire !
On arrive pas à svoir, si la source est inintérensante, complexe, simple...

Moi je te mets 8, pour le plasssiiir, tan nan, nan, nanann nan. Pour le plaisir !

Commentaire de pegase31 le 06/12/2011 01:06:33 administrateur CS

Ah sacré Herbert ...
Je pense simplement que ça dépasse l'intérêt de certaines personnes. (Non, je n'ai pas parlé de "compétences" ...)
Mais c'est vrai que c'est dommage car cette source à été simplifiée pour justement être accessible au commun des mortels.
Regarde sur tes sources, même moi j'ose pas mettre de commentaires tellement j'ai du mal à comprendre ;) (non, je blague)

Après, ce n'est pas "beau" ni "sympa à utiliser".. et ça tombe bien car ce n'est pas le but.

Mais je pense qu'un jour il y aura une question sur le forum d'un gars qui n'aura pas pris la peine ni de chercher ni de se renseigner avant et qui viendra demandé comment ça marche la récursivité.

Peg'

Commentaire de top30 le 07/12/2011 11:16:42

Comme d'habiude, tu as raison,
Comme d'habituuude...

Commentaire de top30 le 08/12/2011 08:57:57

Ben je dois reconnaitre que ton exemple n'est pas des plus explicites pour les néofytes.

Commentaire de pegase31 le 08/12/2011 09:00:11 administrateur CS

il à l'avantage d'être visuel ... ce qui n'est pas le cas de beaucoup.

Peg'

Commentaire de aerolyte le 13/12/2011 19:48:26

Bonjour, je pense qu'un élément important manque pour voir affluer du monde et surtout pour sortir ta source lors d'un recherche.
Ce point de vue et valable pour tout le site d'ailleur:
C'est une spécification  la destination de la source.
en l'occurence on pourrait envisager:

AS3 - PRINCIPE ET APPLICATION DE FONCTION RÉCURSIVE [Jeu / Game]

Bien que l'avenir de l'as3 soit cantonné à:
>l'application air
>le jeux web
>le module video(a court-terme)


 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

pb d'interaction derrière un loadmovie [ par YarbY ] SalutMa scène principale contient des boutons et des combo-box.Je charge dans un clip de cette scène un .swf qui contient une anim de dimension plus p Grille aléatoire sur movie clip [ par Burnside ] Bonjour,Je desirerai savoir comment l'on peut créer une grille vituelle dans un movie clip.Explication:J'ai un fichier Index.swf, qui load des autres Grille Hexagonale [ par vincseize ] En fait certainement tout bete pour un mateux ...Je souhaiterais faire un plateau de jeu type grille hexagonale,sans avoir a dupliquer de mc (pas prop placer 4 cartes dans une grille de facon alleatoire [ par francisbay ] Bonjourj'ai une grille avec 4 case et 4 carte a positionner dans cette grille. Il faut qu'a chaque nouvelle partie les les cartes se trouve dans un e inompatibilité MX -->MX2004 [ par SuperDevy ] Voici mon code :// ParamètresOrigine_x = 30;Origine_y = 30;Cases_x = 7;Cases_y = 5;Largeur = 30;// Dessin de la grillethis.createEmptyMovieClip( interaction entre html et flash [ par LoRdKiFlEx ] Bonjour,je sais qu'il est possible d'envoyer/recevoir des variable de flash a phpmais est 'il possbile de passer de variable a flash depuis un formula Grille hexagonale FLAHMX ? [ par vincseize ] Je me souviens d avoir déja posé la question de comment réaliser une grille hexagonale en utilisant les line draw etc On m avait gentiment répondu, et Interaction depuis le contexte HTML [ par Zart ] Je fais du flash depuis pas mal de temps maintenant et je voulais savoir si depuis le contexte HTML on pouvait modifier un paramètre de l'animation. P Flash - Interaction video [ par jbollue ] Bonjour,je suis novice avec flash(un vrai de vrai) j'ai besoin d'aideJ'ai deux video de personnages qui chante en même temps.J'aimerais lorsque je cli Quel type de fichier ?? [ par MaxusViardis ] Bonjour, voila j'utilise le code de pegase et j'aimerai le modifier pour que la partie qui aligne les 0 et les 1&nbsp;(ici en rouge) viennent d'un fic


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,806 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales