Jeu avec un labyrinthe aléatoire

Soyez le premier à donner votre avis sur cette source.

Vue 18 135 fois - Téléchargée 87 885 fois

Description

Voici ma deuxième source déposée ici et ma première animation de bout en bout en AS3.

Mon challenge initial pour m'initier au nouveau langage était l'écriture en AS3 d'un algorithme de génération de labyrinthe. Pour ne pas réinventer la roue, j'ai adapté le principe décrit par Yann LANGLAIS sur le site http://ilay.org/yann/articles/maze/ et je l'ai transcrit en Actionscript (je le remercie au passage pour son document explicatif clair et précis !).

Le résultat fonctionne mais n'est pas complètement optimisé en terme de coût. Mais pour un labyrinthe allant jusqu'à 50*50 (limite que j'ai fixé dans le jeu) la génération est instantanée.
Le labyrinthe généré étant "parfait" (tout point est relié à tout autre point par au moins un chemin), je me suis dit que dans un deuxième temps j'allais greffer un petit jeu autour du labyrinthe : le but est de faire sortir un petit bonhomme (vue de dessus) le plus rapidement possible, en atteignant le coin inférieur droit du labyrinthe représenté par un rond vert. La touche ESPACE permet un zoom arrière pour visualiser le labyrinthe dans son ensemble.

Source / Exemple :


Organisation du code :

Main : classe Document, gestion des autres objets, du clavier, de la souris, ..
Labyrinthe : classe dérivée de Sprite, génère et représente graphiquement le labyrinthe
Bonhomme : classe associée au symbole graphique du bonhomme, gère son déplacement et ses collisions avec les murs du labyrinthe
Cellule : petite classe utile à l'algo de génération

La maniabilité à la souris m'ayant décu, j'ai intégré un déplacement clavier avec les touches fléchées également. Finalement, les deux sont possibles à tout moment.

J'ai commenté autant que possible le code. C'est mes premiers pas en AS3, j'ai sans doute du faire des erreurs de conception mais dans l'ensemble j'espère que ca pourra servir aux flasheurs qui ont comme moi "débarqué" dans l'AS3 après un rude apprentissage de l'AS1 et 2. Finalement je dois avouer que le côté très "Java" de l'AS3 n'est pas pour me déplaire :)

DEFAUTS :
- pas de preloader, le swf ne fait que 72 ko mais bon ca n'empeche pas. J'ai voulu en faire un mais je me suis heurté à plus de difficultés que prévu.
- pas de packages : pas vraiment nécessaire à mon goût pour un petit jeu comme ca
- ca laggue un peu sur un labyrinthe trop gros... le défilement du sprite est mal géré sur des tailles supérieures à 25/30..
- et sans doute pas mal de bugs encore !

Conclusion :


Un bon exercice personnel qui je l'espère pourra inspirer d'autres codeurs qui se lancent dans Flash et particulièrement l'AS3 qui, au final, présente un confort de programmation largement supérieur aux versions précédentes (à mon goût).
Je ne garantie pas le côté ludique du jeu, moi je préfère concevoir les jeux qu'y jouer !

URL DIRECTE VERS LE JEU :
http://freeplaf.free.fr/flash/labyrinthefou/labyrinthe.html

pour voir mes autres créations flash et des BDs, mon blog est à l'adresse : http://plafpingouin.blogspot.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

taktik24
Messages postés
6
Date d'inscription
mardi 24 janvier 2006
Statut
Membre
Dernière intervention
3 mars 2009

T'inquiète, je n'ai pas besoin de preuve ou de démonstration.

Il existe donc bien un risque d'écrasements de tweens existants, choses que je n'ai pas rencontré avec la classe caurina d'où mon conseil ;)

A chaque projet sa bonne solution, et il existe des projets ou tu balances des tween toutes les secondes, et maintenant avec l'AS3 on peut se le permettre (dans les limites du raisonnable... quoique?)

Pour le Timer, a priori il s'exécute à intervalle régulier, mais les fonctions qu'il execute dépendent de la be cane, cercle vicieux... :)
plaf_falp
Messages postés
29
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
30 octobre 2008

c'est vrai que maintenant qu'on aborde le sujet, je me rappelle que même pour les 2 seuls Tween qui s'enchainent sur ce jeu (zoom puis dézoom) où le 2ème commence suite à l'évènement d'arrêt du 1er (basique, pas trop de risque d'erreur dans le codage), j'ai de facon apparemment aléatoire de temps en temps un ptit bug sur le zoom/dezoom (ca se fige)
Pourtant c'est de l'AS3.. enfin à creuser j'ai pas approfondi, la plupart du temps ca marche

sinon ca n'a rien à voir mais je me demande un truc (curiosité), vous bossez en flash dans votre boulot professionnel ? ou la plupart des posteurs sur flashkod sont des codeurs pour le fun ?
pegase31
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6
un Tween doit être utilisé simplement de façon efficace et intelligente.
Si tu colles des tweens toute les 5 min et partout, c'est clair que tu risques d'avoir des écrasements de tweens existants.

Va voir mon jeu de Burger, et tu verras qu'il y a des tweens partout sans qu'aucun ne s'arrête avant la fin.

Attention, je précise que la classe Tween AS3 est bien plus efficace que le simili truc bizarre fournis en as2.

Peg'
taktik24
Messages postés
6
Date d'inscription
mardi 24 janvier 2006
Statut
Membre
Dernière intervention
3 mars 2009

comme quoi les expériences vécues ne sont pas les mêmes... Avec la classe Tween de flash j'ai rencontré souvent des problèmes de type interruption de mouvement (le mouvement n'atteint pas son point d'arrivée) dans le cadre d'une application lourde en mouvement (ce qui n'est pas le cas ici donc pas de soucis). En utilisant la classe caurina, je n'ai jamais eut ce problème...

Mais je ne fais surement pas parti des gens qui savent utiliser correctement la classe tween de flash.
plaf_falp
Messages postés
29
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
30 octobre 2008

salut taktik, merci d'avoir jeté un oeil sur le code, ca fait plaisir une personne qui s'y interesse ;)
pour ton conseil, en fait il me semble que je n'utilise la classe Tween que pour l'effet zoom de la touche espace mais pas pour le déplacement du perso ou pour le déplacement type "caméra" (où j'utilise des Timer)
donc peut être, comme a l'air de le dire Pegase, j'aurais mieux dû utiliser des Tween ?
le Timer est-il dépendant de la bécane sur laquelle il tourne ? (à priori non je pensais)
les lags sur cette anim apparaissent surtout sur les très gros labyrinthes, sinon c'est relativement fluide

plaf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.