<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.lalex.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>LAlex devblog v6 - Projets</title>
  <link>http://blog.lalex.com/</link>
  <atom:link href="http://blog.lalex.com/feed/category/Projets/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 05 Aug 2008 13:49:22 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>BLDocs online : ca avance ...</title>
    <link>http://blog.lalex.com/post/2004/01/16/BLDocs-online-%3A-ca-avance</link>
    <guid isPermaLink="false">urn:md5:76fea8bb23650a148164e8c808a55449</guid>
    <pubDate>Fri, 16 Jan 2004 12:31:36 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Le parseur de documentation ActionScript 2 que je mène actuellement avec &lt;strong&gt;Kalysto&lt;/strong&gt;, et en collaboration avec &lt;strong&gt;&lt;a href=&quot;http://www.rewindlife.com/&quot;&gt;Samuel R. Neff&lt;/a&gt;&lt;/strong&gt;, avance. Pas trop vite mais il avance ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt; Pour rappel, il s'agit d'un moyen de générer une documentation (au format HTML ou autre) en analysant les commentaires et signatures d'une ou plusieurs classes AS2. &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le processus fonctionnel se déroule en deux étapes : d'abord on parcoure la totalité du code pour en extraire les déclarations de classes, de propriétés et de méthodes, ainsi que les commentaires qui sont a priori des commentaires BLDocs (en gros, ceux qui commencent par /**) ... Ensuite, on peut parser ces parties du code pour générer un fichier XML contenant les informations récupérées, qu'on aura plus qu'à mettre en page grâce à une feuille de style XSLT ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On peut considérer qu'un commentaire est associé à une classe/propriété/méthode à partir du moment où il n'y a que des espaces et/ou des retours à la ligne entre la fin du commentaire et la déclaration elle-même. Cette première partie est a priori achevée, excepté un debugage éventuel. Donc, si certains d'entre vous ont des classes commentées &quot;à la JavaDoc&quot;, ce serait super sympa de vous rendre sur &lt;a href=&quot;http://www.lalex.com/parseas2/bldocs.php&quot;&gt;ce parseur&lt;/a&gt; pour voir s'il n'oublie rien, ou ne fait pas quelques bêtises !!! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce parseur a été entièrement recodé par rapport au précédent. En effet, je me suis rendu compte que gérer les imbrications de commentaires, de chaines de caractères et de blocs d'instructions était quasi-impossible avec les expressions régulières uniquement. J'ai donc adopté un système de fonctionnoment séquentiel, toujours au moyen des expressions régulières, qui progresse dans le code, et sait en permanence s'il est dans un commentaire ou dans une chaîne de caractères, et à quel niveau il se trouve (racine, dans la classe, dans un méthode, etc ...) ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L'étape suivante, une fois les commentaires associés aux bonnes déclarations, consiste à parser tout ca, pour en extraire les &quot;tags&quot; du type @param, @return, etc... pour ensuite générer un fichier XML contenant les informations dont on a besoin. Il sera a priori possible de parser un ensemble de classes (plusieurs fichier .as) en les uplodant dasn un fichier .zip contenant l'arborescence des répertoires et des fichiers ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2004/01/16/BLDocs-online-%3A-ca-avance#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2004/01/16/BLDocs-online-%3A-ca-avance#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/166</wfw:commentRss>
      </item>
    
  <item>
    <title>Documentation de code ActionScript 2</title>
    <link>http://blog.lalex.com/post/2004/01/06/Documentation-de-code-ActionScript-2</link>
    <guid isPermaLink="false">urn:md5:8db0b2526d2a4f05b74215449e36133f</guid>
    <pubDate>Tue, 06 Jan 2004 10:00:17 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Lorsque j'ai présenté mon &lt;a href=&quot;http://www.lalex.com/blog/detail.php?id=107&quot;&gt;parseur AS2&lt;/a&gt;, &lt;strong&gt;kalysto&lt;/strong&gt; a lancé l'idée de créer un format de documentation du code, sur la base de JavaDoc. L'idée n'est pas forcément neuve, et &lt;a href=&quot;http://www.gskinner.com/&quot;&gt;Grant Skinner&lt;/a&gt; dans son application &lt;a href=&quot;http://www.gskinner.com/gmodeler/&quot;&gt;gModeler&lt;/a&gt; (application de diagrammes UML en Flash) à déjà initié ce type de commentaires. &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Seulement, le format FlashDoc a pour inconvénient de ne pas être libre de droits, et qui plus est dédié à l'AS1. :? Commenter des classes AS1 nécessite de préciser dans la documentation les types de variables, noms de classe, etc... Ce qui n'est plus nécessaire avec l'A2, étant donné que le typage fort, la déclaration de classes et la répartition du code par fichier donnent déjà un grand nombre d'informations.&lt;/p&gt;
&lt;p&gt;Nous travaillons donc ensemble à l'élaboration d'un tel format de commentaires, trés proche de JavaDoc, ainsi qu'un parseur qui pourra générer un document XML a partir du code AS, qui lui-même pourra ensuite être mis en page par une feuille de style XSL ... Pour la peine, je suis en train de redévelopper complètement mon parseur AS2, avec deux aspects : un aspect analyse du code (classe, dépendances, méthodes, propriétés) et un autre aspect servant à la colorisation et à la mise en forme du code (blocs d'instructions, chaine de caractères, commentaires, etc...)&lt;/p&gt;
&lt;p&gt;J'ai ensuite l'intention de créer un outil basé sur le parseur, qui permettra d'aider à la documentation du code ... Le format XML aidant, cet outil pourra être en PHP et en Flash ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Les premiers résultats de ces travaux devraient être disponibles dans pas trop longtemps ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2004/01/06/Documentation-de-code-ActionScript-2#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2004/01/06/Documentation-de-code-ActionScript-2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/161</wfw:commentRss>
      </item>
    
  <item>
    <title>Tilegame et mouvements : model or not model ?</title>
    <link>http://blog.lalex.com/post/2003/12/02/Tilegame-et-mouvements-%3A-model-or-not-model</link>
    <guid isPermaLink="false">urn:md5:2548765283cd23acca3dd120f8a5cdf8</guid>
    <pubDate>Tue, 02 Dec 2003 17:59:44 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Je continue à avancer sur mon moteur de tilegame, et je viens de rajouter les déplacements &quot;en douceur&quot;. Ca consiste tout simplement à ne pas téléporter un élément d'une case à une autre, mais de le déplacer progressivement.&lt;/p&gt;
&lt;p&gt;C'est en implémentant cette fonctionnalité que je me suis rendu compte d'une erreur que je pense avoir fait lors de ma précédente version : le modèle n'a pas à gérer le déplacement, mais uniquement le position actuelle de l'objet, et ses prochaines positions.&lt;/p&gt;
&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;201&quot; height=&quot;201&quot; id=&quot;tile&quot; align=&quot;right&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/tilegame03.swf&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/tilegame03.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;201&quot; height=&quot;201&quot; name=&quot;tile&quot; align=&quot;right&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;/object&gt;En fait, précédemment, le modèle s'occupait de faire passer les éléments d'une étape à une autre au moyen d'un setInterval. Aprés réflexion, je pense que c'est la vue qui doit demander au modèle la prochaine position de l'objet et l'afficher. Et encore plus quand le déplacement est progressif : en effet, un objet en position (1.2, 3.5) ne veut absolument rien dire pour le modèle. Cela à un sens uniquement pour la vue. &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Du coup, c'est la vue qui stoque une liste des objets en mouvement. Maintenant, le setInterval s'est déplacé sur la vue. Le modèle dit &quot;Tel élément doit aller à tel position&quot;. La vue déplace cet élément, et une fois que l'objet est à destination, la vue dit au controleur &quot;Je suis arrivé&quot;. Le controleur demande alors au modèle d'informer la vue de la prochaine position de cet objet, etc... 8| Je sais pas si c'est exactement comme ca que dois fonctionner le MVC, alors si des experts de ce modèle de programmation passent dans le coin, manifestez vous ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_mrgreen.gif&quot; alt=&quot;:=)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;J'ai également un peu modifié la gestion du chemin. Auparavant je parcourais un tableau de positions en incrémentant l'index de la position courante. Maintenant, je fais un &lt;em&gt;shift&lt;/em&gt; du tableau, et je récupère la position à l'index 0 à chaque fois ... C'est bien suffisant, et en cas de changement de direction, c'est plus logique ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/12/02/Tilegame-et-mouvements-%3A-model-or-not-model#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/12/02/Tilegame-et-mouvements-%3A-model-or-not-model#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/154</wfw:commentRss>
      </item>
    
  <item>
    <title>Tilegame : interactions à la souris et déplacement</title>
    <link>http://blog.lalex.com/post/2003/12/01/Tilegame-%3A-interactions-la-souris-et-dplacement</link>
    <guid isPermaLink="false">urn:md5:cd2d55589cb59afe839a0b038314a5ea</guid>
    <pubDate>Mon, 01 Dec 2003 14:48:13 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Mon petit moteur de tilegame continue à avancer comme il peut, toujours en MVC &quot;fait-maison&quot; ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; J'en arrive maintenant à une iteraction à la souris, et au déplacement d'un élément suivant un chemin (accessoirement trouvé avec mon pathfinder A*) ...&lt;/p&gt;
&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;201&quot; height=&quot;201&quot; id=&quot;tile&quot; align=&quot;right&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/tilegame02.swf&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/tilegame02.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;201&quot; height=&quot;201&quot; name=&quot;tile&quot; align=&quot;right&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Tout d'abord, je me rend compte que mon pathfinder &quot;mis en situation&quot; semble bien fonctionner. Même si c'est vrai que l'espace de recherche est plutôt réduit dans cet exemple, vous remarquerez qu'il n'y a pas de temps de latence (notable) entre le clic sur une case et le départ du l'objet. Et ca, j'en suis assez content ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;J'ai passé un petit moment à réfléchir sur la manière de faire suivre un chemin à un objet, et également à avoir la possibilité de faire se déplacer plusieurs objets en même temps, en ayant des performances correctes. J'en suis arrivé à créer des propriétés _path et _pathPos pour chaque élément. La première contient un tableau renvoyé par le pathfinder, dont chaque élément est un objet ayant les propriétés &lt;em&gt;x&lt;/em&gt; et &lt;em&gt;y&lt;/em&gt;. Là deuxième est l'indice de la position actuelle.&lt;/p&gt;
&lt;p&gt;Les éléments possèdent également une méthode next ... Qui déplace l'objet a la position suivante, et renvoie un booleen qui spécifie s'il reste encore du chemin à faire. S'il est faux, on est au bout du chemin. J'utilise également un système équivalent à la gestion des évenements par Flash. C'est un tableau contenant tous les objets en mouvement. Si un objet arrive au bout de son chemin, il est retiré du tableau. Pour faire bouger un objet, il suffit de lui attribuer un chemin, et de l'ajouter au tableau.&lt;/p&gt;
&lt;p&gt;Ainsi, le modèle contient les méthode &lt;em&gt;addMoving&lt;/em&gt;, &lt;em&gt;removeMoving&lt;/em&gt;, et &lt;em&gt;moveForward&lt;/em&gt;, cette dernière faisant avancer tous les objets en mouvement d'une étape. C'est également moveForward qui est appelé dans un intervalle (setInterval) pour simuler le mouvement.&lt;/p&gt;
&lt;p&gt;Un aspect pratique est de créer une méthode findPath à laquelle on passe un élément, et des coordonnées d'arrivée. Cela permet de choisir une autre destination pendant le déplacement de celui-ci. Il suffit alors juste de changer le chemin à parcourir pour l'objet, et il continue de se déplacer sur son nouveau chemin. &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/12/01/Tilegame-%3A-interactions-la-souris-et-dplacement#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/12/01/Tilegame-%3A-interactions-la-souris-et-dplacement#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/150</wfw:commentRss>
      </item>
    
  <item>
    <title>Tilegame : première étape</title>
    <link>http://blog.lalex.com/post/2003/11/19/Tilegame-%3A-premire-tape</link>
    <guid isPermaLink="false">urn:md5:a68ad2bd0f66ad6c54ddbf86a23be6a5</guid>
    <pubDate>Wed, 19 Nov 2003 11:54:57 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Voici une toute première étape de mon moteur de tilegame ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; Il s'agit donc pour l'instant d'un affichage en 2D avec vue du dessus. Je compte en fait finaliser le moteur de cette manière avant de faire un affichage en 3D iso.&lt;/p&gt;
&lt;p&gt;En effet, de par sa programmation en MVC, la vue (l'affichage) se contente de réagir aux évenements du model (les données). Le plus gros du travail consiste donc a structurer correctement le modele pour qu'il stocke les données de manière optimale, et de lui faire envoyer les bons évenements. La partie affichage ne devient en fait qu'un &quot;détail&quot; ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;201&quot; height=&quot;201&quot; id=&quot;tile&quot; align=&quot;right&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/tilegame.swf&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/tilegame.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;201&quot; height=&quot;201&quot; name=&quot;tile&quot; align=&quot;right&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Pour ce qui est du stockage des données, étant donné que j'ai trouvé peu de ressources sur la programmation d'un tel moteur en POO (beaucoup d'exemples en C, mais c'est pas vraiment pareil), je suis donc parti de rien. Juste le fait de savoir qu'il faut que la carte ai plusieurs niveaux, dans l'optique de la 3D iso.&lt;/p&gt;
&lt;p&gt;Le modele contient donc un tableau des différentes couches, qui sont elle-mêmes des tableaux à deux dimensions contenant uniquement des nombres. Pour l'instant je n'ai que deux couches : la couche du sol (les cases blanches), et la couche du décor (les murs, symbolisés par les cases noires).&lt;/p&gt;
&lt;p&gt;Le modèle contient également un tableau &quot;d'éléments&quot;. Je nomme élément tout ce qui peut recevoir le focus durant un jeu. Certains pouront se déplacer (héro, NPC, etc..), et d'autres non. Une classe &lt;em&gt;Element&lt;/em&gt; leur est dédiée. Chaque élément est situé sur une couche de la carte.&lt;/p&gt;
&lt;p&gt;Comme il faut le faire en MVC, le contrôleur est la classe qui va spécifier au modèle les actions à effectuer. C'est donc cette classe qui se charge également d'écouter le clavier (pour l'instant, ensuite les déplacements pouront se faire à la souris).&lt;/p&gt;
&lt;p&gt;Lors d'une instruction de déplacement d'un élément recue du contrôleur, le modèle vérifie si cet élément peut se déplacer sur la case de destination, et applique ces modifications si c'est le cas. Ensuite, il emet un évenement qui va être reçu par la vue, qui va déplacer le clip correspondant.&lt;/p&gt;
&lt;p&gt;Le chargement des données se fait bien évidemment via un fichier XML qui contiendra toutes les infos. Je pense aussi rajouter une balise &lt;triggers&gt; qui permettra d'affecter une action à une case. Voici la structure du fichier XML :&lt;code&gt;&amp;lt;?xml encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;map width=&amp;quot;10&amp;quot; height=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;layers&amp;gt;&lt;br /&gt;
		&amp;lt;layer depth=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
		&amp;lt;layer depth=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0,10, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0,10, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0,10, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0,10, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,&lt;br /&gt;
			 0, 0, 0, 0, 0, 0, 0, 0, 0, 0&lt;br /&gt;
		&amp;lt;/layer&amp;gt;&lt;br /&gt;
	&amp;lt;/layers&amp;gt;&lt;br /&gt;
	&amp;lt;elements&amp;gt;&lt;br /&gt;
		&amp;lt;element type=&amp;quot;CHARACTER&amp;quot; layer=&amp;quot;1&amp;quot; focus=&amp;quot;true&amp;quot;&amp;gt;LAlex&amp;lt;/element&amp;gt;&lt;br /&gt;
	&amp;lt;/elements&amp;gt;&lt;br /&gt;
&amp;lt;/map&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En fait, ce moyen de programmer est assez excellent ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt; Je le mets en pratique &quot;à ma manière&quot;, étant donné que je n'ai pas vraiment de référence la dessus, mais j'essaie d'appliquer le concept de la manière dont je le comprends, et je trouve ca passionant ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/11/19/Tilegame-%3A-premire-tape#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/11/19/Tilegame-%3A-premire-tape#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/143</wfw:commentRss>
      </item>
    
  <item>
    <title>Courbes de Bézier : première approche</title>
    <link>http://blog.lalex.com/post/2003/10/07/Courbes-de-Bzier-%3A-premire-approche</link>
    <guid isPermaLink="false">urn:md5:22bd60c4086f3eabe48a311482956e38</guid>
    <pubDate>Tue, 07 Oct 2003 15:56:29 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Aprés avoir téléchargé le fichier split-bezier de &lt;a href=&quot;http://www.andre-michelle.com/&quot;&gt;André Michelle&lt;/a&gt;, j'ai aperçu dans le code une fonction du nom de casteljau ... c'est suffisant pour que je recherche à quoi correspond ce nom. &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L'algorithme de Casteljeau permet de trouver un point faisant partie d'une courbe de Bezier en fonction de ses point de controles, à un pourcentage donné. Il s'agit d'utiliser ce ratio pour obtenir un point situé sur le segment entre un point de contrôle et le point suivant, pour obtenir une série de points de longueur égale au nombre de points de contrôles moins un. La recursivité est utilisée jusqu'à ce que l'on obtienne un seul et unique point. Le point obtenu est situé sur la courbe.&lt;/p&gt;
&lt;p&gt;Je me suis donc empressé d'implémenter cet algorithme en Flash, et ca donne un début de classe &lt;strong&gt;&lt;em&gt;Bezier&lt;/em&gt;&lt;/strong&gt;, avec pour l'instant une méthode statique &lt;strong&gt;&lt;em&gt;casteljau&lt;/em&gt;&lt;/strong&gt;, qui prend en paramètre un ratio, et une liste de coordonnées et retourne un objet avec des coordonnées, et une methode &lt;strong&gt;&lt;em&gt;listCasteljau&lt;/em&gt;&lt;/strong&gt; qui retourne un tableau des différentes étapes (dont je me sert pour le SWF ci-dessous). Au fur et à mesure de mes trouvailles, je compléterai cette classe ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Et en plus d'être interessant, je trouve ca joli ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_razz.gif&quot; alt=&quot;:P&quot; class=&quot;smiley&quot; /&gt;&lt;div align=&quot;center&quot;&gt;&lt;quote&gt;&lt;div align=&quot;center&quot;&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;550&quot; height=&quot;250&quot; id=&quot;bezier&quot; align=&quot;middle&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/bezier.swf&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/bezier.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;550&quot; height=&quot;250&quot; name=&quot;bezier&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/quote&gt;&lt;/div&gt;&lt;br /&gt;
Mais trouver les points successifs n'est pas suffisant pour pouvoir dessiner la courbe ... Je suis alors tombé sur l'article de &lt;a href=&quot;http://timotheegroleau.com/&quot;&gt;Thimothee Groleau&lt;/a&gt; sur la tranformation d'un courbe cubique (quatre points de contrôle) en une courbe quadatrique (trois points de contrôle) : &lt;a href=&quot;http://www.timotheegroleau.com/Flash/articles/cubic_bezier/cubic_bezier_in_flash.htm&quot;&gt;http://www.timotheegroleau.com/Flash/articles/cubic_bezier/cubic_bezier_in_flash.htm&lt;/a&gt;. Je ne l'ai pas encore étudié a fond, mais je vais voir s'il est possible de le généraliser à un nombre n de points de contrôles ...&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=&quot;http://download.lalex.com/devblog/Bezier.zip&quot; title=&quot;Download Bezier.zip&quot;&gt;::Télécharger Bezier.zip::&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/10/07/Courbes-de-Bzier-%3A-premire-approche#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/10/07/Courbes-de-Bzier-%3A-premire-approche#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/117</wfw:commentRss>
      </item>
    
  <item>
    <title>PathFinding et Arbres binaires ... pas mieux !</title>
    <link>http://blog.lalex.com/post/2003/09/29/PathFinding-et-Arbres-binaires-pas-mieux</link>
    <guid isPermaLink="false">urn:md5:2b17b75e9ae1f2bd2487e175a4cb1c44</guid>
    <pubDate>Mon, 29 Sep 2003 18:53:15 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Comme le préconise Patrick Lester dans son article &lt;a href=&quot;http://www.policyalmanac.org/games/binaryHeaps.htm&quot;&gt;Using Binary Heaps in A* Pathfinding&lt;/a&gt;, j'ai implémenté le gestion de la liste ouverte sous forme d'arbre binaire (binary heap) que l'on conserve trié en permanence pour ne pas avoir à chercher la case ayant le cout minimum en bouclant sur la liste ouverte. Et bien dans l'état actuel des choses, &lt;strong&gt;ce n'est pas plus performant&lt;/strong&gt; !!! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Pourtant, de ce que j'en ai compris, cela devrait aller beaucoup plus vite ! 8O Mais une petite surveillance su temps pris par chaque étape de la recherche indique que cette boucle sur la liste ouverte n'est pas ce qu'il y a de plus lent ... et en plus, chaque fonction indépendemment prend moins de 1ms., donc impossible de tracer le temps ... :?&lt;/p&gt;
&lt;p&gt;Voila donc un exemple qui fait la comparation des deux méthodes sur chaque fois le même trajet. La carte est de dimensiosn 30x30 pour tester sur un peu plus grand que précédemment. Vous pouvez aussi télécharger le fichier source de la classe PathFinder.as ... si vous découvrez une explication, n'hésitez pas à me faire signe ! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt; L'activation des arbres binaires se fait avec la variable statique &lt;em&gt;&lt;strong&gt;BINARY_HEAPS&lt;/strong&gt;&lt;/em&gt; qui est un booléen.&lt;/p&gt;
&lt;p&gt;&lt;div align=&quot;center&quot;&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;480&quot; height=&quot;250&quot; id=&quot;heroes2004&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/pathheaps.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#E1E1E1&quot; /&gt;&lt;embed src=&quot;http://blog.lalex.com/public/pathheaps.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#E1E1E1&quot; width=&quot;480&quot; height=&quot;250&quot; name=&quot;heroes2004&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;&lt;/object&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=&quot;http://download.lalex.com/devblog/pathfinder.zip&quot; title=&quot;Download pathfinder.zip&quot;&gt;::Télécharger pathfinder.zip::&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/09/29/PathFinding-et-Arbres-binaires-pas-mieux#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/09/29/PathFinding-et-Arbres-binaires-pas-mieux#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/112</wfw:commentRss>
      </item>
    
  <item>
    <title>Sources du moteur 3D ActionScript 2 beta</title>
    <link>http://blog.lalex.com/post/2003/09/26/Sources-du-moteur-3D-ActionScript-2-beta</link>
    <guid isPermaLink="false">urn:md5:68a183585a14bae4c3af1d07e258dadf</guid>
    <pubDate>Fri, 26 Sep 2003 16:33:40 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Voici la version beta téléchargeable sous forme d'API du moteur 3D AS2 que je vous ai montré récemment (qui était une version alpha). Pourquoi une version beta ? Petit rappel : une version alpha ne possède pas toutes les fonctionnalités, alors qu'une version beta possède toutes les fonctionnalités, mais elles peuvent être buguées (ce qui est le cas ici :P)...&lt;/p&gt;
&lt;p&gt;L'API possède donc maintenant les fonctionnalités de &lt;strong&gt;remplissage des faces&lt;/strong&gt; et leur &lt;strong&gt;éclairage&lt;/strong&gt;. Dans l'interface graphique, vous pouvez maintenant déplacer la lumière ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le bug porte en fait sur sur le tri des facettes de la plus éloignée à la plus proche de la caméra, tri qui n'est pas foncièrement bon, mais pas forcément mauvais, c'est à dire qu'il fonctionne une fois sur deux, car si dans la même position je fais deux fois le rendu, une fois le tri est bon, une fois il ne l'est pas ... :(. Je n'arrive d'ailleurs pas à comprendre pourquoi ... alors si un cador de la programmation 3D pouvait se pencher sur ce code, ce serait super sympa ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt; J'utilise &lt;strong&gt;l'algorithme du peintre&lt;/strong&gt;, qui consiste simplement à trier les profondeurs moyennes de chaque face et de s'en servir pour le tri ...&lt;/p&gt;
&lt;p&gt;Les packages nécessaires sont inclus dans l'archive. La classe &quot;de base&quot; est la classe &lt;em&gt;Shape&lt;/em&gt;, qui est la classe représentant un objet 3D, avec ses vertex, arrêtes et faces.&lt;/p&gt;
&lt;p&gt;Les fonctionnalités à venir :&lt;ul&gt;&lt;li&gt;Gestion de la distance par rapport ) la lumière&lt;br /&gt;&lt;/li&gt;
&lt;li&gt; Gestion de l'intensité et de la distance des lumières&lt;br /&gt;
&lt;li&gt;Utilisation des BSP Trees&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Test de remplissage avec des dégradés (simulation du remplissage de Gouraud)&lt;br /&gt;
&lt;li&gt;Debugage ... :?&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;&lt;quote&gt;&lt;div align=&quot;center&quot;&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;600&quot; height=&quot;436&quot; id=&quot;3dengine&quot; align=&quot;middle&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/api3d.swf&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot;&gt;&lt;/param&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/api3d.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;600&quot; height=&quot;436&quot; name=&quot;3dengine&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/quote&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;http://download.lalex.com/devblog/api3d.zip&quot; title=&quot;Download api3d.zip&quot;&gt;::Télécharger api3d.zip::&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/09/26/Sources-du-moteur-3D-ActionScript-2-beta#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/09/26/Sources-du-moteur-3D-ActionScript-2-beta#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/110</wfw:commentRss>
      </item>
    
  <item>
    <title>Premier apercu de moteur 3D en AS2</title>
    <link>http://blog.lalex.com/post/2003/09/23/Premier-apercu-de-moteur-3D-en-AS2</link>
    <guid isPermaLink="false">urn:md5:f533944d990722156a6a1470e488c841</guid>
    <pubDate>Tue, 23 Sep 2003 12:35:05 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Voici un premier apercu de mon moteur 3D recodé (et non pas traduit) en ActionScript 2. Le moteur en lui-même est pratiquement fini : il ne manque plus que la gestion de faces et de la lumière. Je n'ai pas non plus implémenté le &quot;non-affichage&quot; des arretes et points situés en dehors de la zone d'affichage ou derrière la caméra, d'ou quelque bugs graphiques quand l'objet ne devrait pas être visible ...&lt;/p&gt;
&lt;p&gt;Des questions se posent sur les performances d'un tel moteur : l'implémentation objet d'un moteur 3D peut-elle être une solution viable pour Flash ? Ou faut-il obligatoirement passer par du spécifique ou du &lt;strong&gt;flasm&lt;/strong&gt; pour avoir des perfomrances honorables ? L'optimisation du bytecode dans le Flash Player 7 est encourageante, mais est-ce suffisant pour ce type d'applications ? La question se pose, et si vous avez la réponse, je suis preneur !!! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;L'interface de l'éditeur est loin d'être finie, autant en terme de fonctionnalités qu'en terme d'ergonomie et de visuel ... mais je vous montre ici ses fonctionnalités de base :&lt;/p&gt;
&lt;p&gt;&lt;quote&gt;&lt;div align=&quot;center&quot;&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;600&quot; height=&quot;436&quot; id=&quot;3dengine&quot; align=&quot;middle&quot;&gt;&lt;br /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/3dengine.swf&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#FAFAFA&quot; /&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/3dengine.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#FAFAFA&quot; width=&quot;600&quot; height=&quot;436&quot; name=&quot;3dengine&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;&lt;br /&gt;
&lt;/object&gt;&lt;/div&gt;&lt;/quote&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/09/23/Premier-apercu-de-moteur-3D-en-AS2#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/09/23/Premier-apercu-de-moteur-3D-en-AS2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/108</wfw:commentRss>
      </item>
    
  <item>
    <title>PathFinder an ActionScript 2 : les sources</title>
    <link>http://blog.lalex.com/post/2003/09/19/PathFinder-an-ActionScript-2-%3A-les-sources</link>
    <guid isPermaLink="false">urn:md5:0614f267dff185c64099d46197f08fbd</guid>
    <pubDate>Fri, 19 Sep 2003 13:01:31 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;480&quot; height=&quot;250&quot; id=&quot;LAlexPath&quot; align=&quot;right&quot;&gt;&lt;br /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/lalexpath.swf&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;br /&gt;
&lt;param name=&quot;bgcolor&quot; value=&quot;#e1e1e1&quot; /&gt;&lt;br /&gt;
&lt;embed src=&quot;http://blog.lalex.com/public/lalexpath.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#e1e1e1&quot; width=&quot;480&quot; height=&quot;250&quot; name=&quot;LAlexPath&quot; align=&quot;right&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;&lt;br /&gt;
&lt;/object&gt;Comme promis voici les sources de mon pathfinder. Il a été adapté pour être a peu prés correct avec l'interactivité que je voulais, mais il s'inscrit dans un cadre plus grand de moteur de jeu, donc tout seul, il perd un peu de sa rigueur ... :?&lt;/p&gt;
&lt;p&gt;Vous pouvez donc maintenant cliquer sur la carte pour tester votre propre chemin, et choisir de ne pas faire de diagonales, ou de pouvoir faire une diagonale lorsque vous êtes au coin d'un mur (ce qui est déconseillé dans le cadre d'un moteur de jeu) ...&lt;/p&gt;
&lt;p&gt;Vous trouverez dans l'archive une fichier &lt;em&gt;flp&lt;/em&gt; (Projets Flash) qui vous donnera accés à tout le reste. Le pathfinder en lui-même se situe dans la classe &lt;strong&gt;map.Map&lt;/strong&gt; et j'ai essayé de le commenter assez correctement, mais il restera assez flou si vous n'avez pas integré les notions du &lt;a href=&quot;http://www.lalex.com/blog/detail.php?id=49&quot;&gt;pathfinding A*&lt;/a&gt; ...&lt;/p&gt;
&lt;p&gt;En ce qui concerne la 3D iso, je commence a peine à apréhender, donc tout n'est peut-être pas correct dans la manière d'organiser mon affichage. En fait, je voudrais bien savoir comment font les gens qui utilisent un moteur 3D iso pour leur affichage. Passent-ils pas des clips exportés de la librairie, ou utilisent-ils un autre moyen ? :roll:&lt;/p&gt;
&lt;p&gt;Voila, amusez vous bien avec ce code !!! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_cool.gif&quot; alt=&quot;8)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=&quot;http://download.lalex.com/devblog/lalexpath.zip&quot; title=&quot;Download lalexpath.zip&quot;&gt;::Télécharger LAlexPath.zip::&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;petepx&lt;/strong&gt; a également fait un pathfinder, qui est le portage de celui d'&lt;a href=&quot;http://www.andre-michelle.com/&quot;&gt;André Michelle&lt;/a&gt; en AS2. Plus d'infos sur &lt;a href=&quot;http://www.tweenpix.com/blog/index.php?itemid=29&quot;&gt;son blog&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/09/19/PathFinder-an-ActionScript-2-%3A-les-sources#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/09/19/PathFinder-an-ActionScript-2-%3A-les-sources#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/107</wfw:commentRss>
      </item>
    
  <item>
    <title>Pathfinding : mise en pratique avec ActionScript 2</title>
    <link>http://blog.lalex.com/post/2003/09/12/Pathfinding-%3A-mise-en-pratique-avec-ActionScript-2</link>
    <guid isPermaLink="false">urn:md5:dec8af5f99f7c8b58c2738292c2f3c5c</guid>
    <pubDate>Fri, 12 Sep 2003 18:17:48 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0&quot; width=&quot;480&quot; height=&quot;250&quot; id=&quot;heroes2004&quot; align=&quot;right&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://blog.lalex.com/public/heroes2004.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#E1E1E1&quot; /&gt;&lt;embed src=&quot;http://blog.lalex.com/public/heroes2004.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#E1E1E1&quot; width=&quot;480&quot; height=&quot;250&quot; name=&quot;heroes2004&quot; align=&quot;right&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;&lt;/object&gt;Voici ma première implémentation faite avec Flash MX 2004. Il s'agit de l'algorithme de pathfinding dont je vous ai parlé précédemment. Maintenant entièrement en AS2, il se contente pour l'instant de générer un carte aléatoire.&lt;/p&gt;
&lt;p&gt;Je compte rejouter de l'interactivité bientôt (pouvoir choisir un chemin), ainsi qu'un éditeur de carte (ca c'est peut-être pas pour tout de suite). Pour information, les cases &quot;normales&quot; ont un cout de 10, le cases en orange (sableà ont un cout de 12. C'est pourquoi selon que cela vaille le coût de contourner ou pas, le chamin peut passer ou ne pas passer par des cases oranges. Lorsqu'il sera un peu plus complet, je mettrai les sources à disposition.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/09/12/Pathfinding-%3A-mise-en-pratique-avec-ActionScript-2#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/09/12/Pathfinding-%3A-mise-en-pratique-avec-ActionScript-2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/96</wfw:commentRss>
      </item>
    
  <item>
    <title>Pathfinding : ca avance, et en 3D isométrique !</title>
    <link>http://blog.lalex.com/post/2003/08/29/Pathfinding-%3A-ca-avance-et-en-3D-isomtrique</link>
    <guid isPermaLink="false">urn:md5:badb319085233fa4ca42b6cd43b7822e</guid>
    <pubDate>Fri, 29 Aug 2003 12:43:40 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.lalex.com/post/2003/08/29/blogpics/pathiso.gif&quot; border=&quot;0&quot; align=&quot;right&quot;/&gt;&lt;br /&gt;
J'avance bien sur mon algo de pathfinding. En fait, j'avais fait un peu n'importe quoi dans ma première implémentation (mal compris l'explication de l'algo en anglais), et là j'ai tout repris en me basant sur l'implémentation de zeh (voir lien plus bas). Sans reprendre son algo, cela m'a permi de mieux le cerner, et de pouvoir l'implementer correctement. En fait, ce qui change par rapport au sien, ce que &lt;strong&gt;mon implémentation est faite en POO&lt;/strong&gt;, alors que la sienne est une &quot;simple&quot; fonction, qui prend un tableau à deux dimensions en paramètre.&lt;/p&gt;
&lt;p&gt;La structure de mes classes est en fait assez simple : une classe '&lt;em&gt;Map&lt;/em&gt;', qui contient la méthodes &lt;em&gt;findPath&lt;/em&gt;, et qui prend en paramètre les coordonnées de départ et d'arrivée. Une classe '&lt;em&gt;Tile&lt;/em&gt;', qui constitue la base de chaque élément de la carte, et qui est étendue par des classes '&lt;em&gt;Wall&lt;/em&gt;', '&lt;em&gt;Floor&lt;/em&gt;', '&lt;em&gt;Sand&lt;/em&gt;', etc... qui vont représenter les différents type de terrain.&lt;/p&gt;
&lt;p&gt;Apparemment, il est assez &lt;strong&gt;optimisé&lt;/strong&gt; (j'en ai d'ailleurs profité pour suggérer quelques mini-optimisations à l'auteur du pathfinding précédemment cité), et j'arrive à obtenir des performances trés légerement meilleures, alors que tout est codé en objet : je n'en revient pas moi-même !!! En fait, de par l'implémentation objet et l'utilisation des &quot;pointeurs&quot; de Flash (utilisation des références et non pas des valeurs), j'arrive à éviter certaines boucles... Par contre, le temps que vous voyez affiché sur l'image est pour le &lt;strong&gt;Flash Player 7&lt;/strong&gt; (beta v7.0.2.0), qui est bien plus rapide que le 6 ...&lt;br /&gt;
J'en ai profité pour créer une méthode d'affichage en &lt;strong&gt;3D isométrique&lt;/strong&gt;, parce que je trouve ca plus joli ... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dés la sortie de Flash MX 2004, je le refait en ActionScript 2, et je mettrai les sources à disposition ici-même !&lt;br /&gt;
Je pense également faire prochainement une explication &lt;strong&gt;en français&lt;/strong&gt; de l'algorithme &lt;strong&gt;A*&lt;/strong&gt; pour le pathfinding, basé sur ce que j'en ai compris, et axé sur la pédagogie pour le mettre à la portée du plus grand nombre.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/29/Pathfinding-%3A-ca-avance-et-en-3D-isomtrique#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/29/Pathfinding-%3A-ca-avance-et-en-3D-isomtrique#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/86</wfw:commentRss>
      </item>
    
  <item>
    <title>Implémentation du pathfinding en Flash</title>
    <link>http://blog.lalex.com/post/2003/08/25/Implmentation-du-pathfinding-en-Flash</link>
    <guid isPermaLink="false">urn:md5:c0f0bdf352b5c0558a15e242958dde07</guid>
    <pubDate>Mon, 25 Aug 2003 11:46:53 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.lalex.com/post/2003/08/25/blogpics/path.gif&quot; border=&quot;0&quot; align=&quot;right&quot;/&gt;J'ai essayé d'implémenter l'algorithme de pathfinding &lt;strong&gt;A*&lt;/strong&gt; dans Flash, à l'aide du lien donné dans un &lt;a href=&quot;http://blog.lalex.com/post/2003/08/25/detail.php?id=29&quot;&gt;post précédent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour optimiser un peu, au lieu de créer des &quot;listes&quot; pour les 'open list' et 'close list', j'ai créé des tableaux à deux dimensions de même taille que la carte, ainsi accessibles directement par les coordonnées correspondantes au point de la carte que l'on utilise.Par contre, je n'ai pas implémenté le contour des murs, ce qui fait qu'on peut passer en diagonale de la case [ 2 ] à la [ 3 ], et de la [ 3 ] à la [ 4 ]. Vous voyez ici le visuel qui en résulte.&lt;/p&gt;
&lt;p&gt;Mais le problème n'est pas la : j'ai fait en sorte que les déplacements en diagonale soient plus couteux que ceux en ligne droite (multipliés par 1.4), et j'ai intégré une notion de cout selon la nature du terrain (les cases vertes ont un coût de 10, et la case jaune un coût de 15). Vous constatez donc que le chemin emprunté n'est pas le bon ... mais pourquoi ?&lt;br /&gt;
En fait, l'algorithme A* fait une recherche dans les cases autour de la case en cours, et garde celle qui a le cout &quot;total&quot; le plus petit (&quot;cout total&quot; = &quot;cout de parcour&quot; + &quot;cout restant à parcourir&quot; : voir le lien avec l'algo). Or, dans ce cas précis, la case [ 2 ] et la case [ 2' ] ont le même coût, et le choix dépend donc de la comparaison faite lors du choix du minimum : soit un utilise '&lt;strong&gt;&lt;em&gt;&lt;&lt;/em&gt;&lt;/strong&gt;' (strictement inférieur), soit on utilise '&lt;strong&gt;&lt;em&gt;&lt;=&lt;/em&gt;&lt;/strong&gt;' (inférieur ou égal). Bref, dans les deux cas, il faut en choisir une, sans savoir s'il s'agit de la bonne ou pas.&lt;/p&gt;
&lt;p&gt;Donc, je pense qu'il faut garder dans l'algorithme toutes les cases qui ont un coût minimum pour effectuer la recherche, et donc éliminer moins de cases, ce qui va évidemment se ressentir dans les performances ... :'(&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/25/Implmentation-du-pathfinding-en-Flash#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/25/Implmentation-du-pathfinding-en-Flash#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/82</wfw:commentRss>
      </item>
    
  <item>
    <title>Une autre GUI en Flash</title>
    <link>http://blog.lalex.com/post/2003/08/08/Une-autre-GUI-en-Flash</link>
    <guid isPermaLink="false">urn:md5:129e6c905f16f7485419f3bc42864d3a</guid>
    <pubDate>Fri, 08 Aug 2003 12:09:47 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Voici une GUI Flash nommée &lt;strong&gt;flui&lt;/strong&gt; : &lt;a href=&quot;http://clearsoftware.net&quot;&gt;http://clearsoftware.net&lt;/a&gt;. Ca a l'air bien fait, mais je suis un peu décu par le manque d'informations techniques pour les développeurs... Elle reste toutefois OpenSource et gratuite pour une utilisation à but non lucratif.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/08/Une-autre-GUI-en-Flash#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/08/Une-autre-GUI-en-Flash#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/65</wfw:commentRss>
      </item>
    
  <item>
    <title>Une source d'inspiration pour la GUI</title>
    <link>http://blog.lalex.com/post/2003/08/08/Une-source-dinspiration-pour-la-GUI</link>
    <guid isPermaLink="false">urn:md5:9235e2286d311befc46c8a0397889a39</guid>
    <pubDate>Fri, 08 Aug 2003 10:28:13 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;Ce schema de classes est celui utilidé par &lt;a href=&quot;http://www.gskinner.com&quot;&gt;gskinner&lt;/a&gt; pour son &lt;a href=&quot;http://www.flashos.net/&quot;&gt;FlashOS&lt;/a&gt;.&lt;br /&gt;
Il représente une bonne source d'inspiration pour la création de ma GUI. Je compte aussi m'inspirer des classes SWING de Java, des MFC de Microsoft et du DOM Javascript.&lt;br /&gt;
&lt;strong&gt;Attention !&lt;/strong&gt; Le schema complet est grand (1440 x 1081) et pèse prés de 160 Ko ...&lt;/p&gt;
&lt;p&gt;[ &lt;a href=&quot;javascript:openPopup('pop.flashos.php',600,400);&quot;&gt;Voir le schema&lt;/a&gt; ]&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/08/Une-source-dinspiration-pour-la-GUI#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/08/Une-source-dinspiration-pour-la-GUI#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/62</wfw:commentRss>
      </item>
    
  <item>
    <title>Schema de la GUI</title>
    <link>http://blog.lalex.com/post/2003/08/05/Schema-de-la-GUI</link>
    <guid isPermaLink="false">urn:md5:4c6cdfdef4430964295eda484bfd4cba</guid>
    <pubDate>Tue, 05 Aug 2003 00:00:00 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;img src=&quot;http://blog.lalex.com/post/2003/08/05/blogpics/maquette.gif&quot; border=&quot;0&quot; align=&quot;right&quot;/&gt;Voici le schema que j'ai fait pour la constitution de mes classes. Bon, j'ai oublié les menus, mais faites preuve d'imagination un peu !!! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_biggrin.gif&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ma méthode de développement est basée sur la &lt;strong&gt;programmation évenementielle&lt;/strong&gt;.&lt;br /&gt;
Elle consiste à concevoir mon modéle de classes, puis a savoir pour chacune d'elle quels sont les évenements qu'elles vont émettre.&lt;ul&gt;&lt;li&gt; En fonction de cela, je crée les méthodes qui vont émettre ces évenements.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt; Ensuite, je crée les méthodes &quot;privées&quot;&lt;br /&gt;
&lt;li&gt; Pour &quot;finir&quot; je crée les méthodes d'entrée/sortie (get/set)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/05/Schema-de-la-GUI#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/05/Schema-de-la-GUI#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/56</wfw:commentRss>
      </item>
    
  <item>
    <title>Packages et classes</title>
    <link>http://blog.lalex.com/post/2003/08/05/Packages-et-classes</link>
    <guid isPermaLink="false">urn:md5:bab92d70c33c42ef94c7155ddc1e22e9</guid>
    <pubDate>Tue, 05 Aug 2003 00:00:00 +0000</pubDate>
    <dc:creator>-Alexandre LEGOUT aka LAlex-</dc:creator>
        <category>Projets</category>
            
    <description>    &lt;p&gt;&lt;strong&gt;[ lalex.gui ]&lt;/strong&gt;&lt;br /&gt;
Window&lt;br /&gt;
WindowManager&lt;br /&gt;
&lt;strong&gt;[ lalex.gui.win ]&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;$Element&lt;/em&gt;&lt;br /&gt;
TitleBar :: $Element&lt;br /&gt;
StatusBar :: $Element&lt;br /&gt;
ContextBar :: $Element&lt;br /&gt;
&lt;strong&gt;[ lalex.gui.scroll ]&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;$ScrollBar&lt;/em&gt; :: $Element&lt;br /&gt;
VScrollBar :: $ScrollBar&lt;br /&gt;
HScrollBar :: $ScrollBar&lt;br /&gt;
&lt;strong&gt;[ lalex.gui.menu ]&lt;/strong&gt;&lt;br /&gt;
MenuBar :: $Element&lt;br /&gt;
MenuItem&lt;br /&gt;
&lt;strong&gt;[ lalex.gui.content ]&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;$Container&lt;/em&gt;&lt;br /&gt;
SwfContainer :: $Container&lt;br /&gt;
TextContainer :: $Container&lt;br /&gt;
TextFileContainer :: TextContainer&lt;br /&gt;
ListContainer :: $Container&lt;br /&gt;
XMLListContainer :: ListContainer&lt;br /&gt;
TreeContainer :: ListContainer&lt;br /&gt;
XMLTreeContainer :: TreeContainer&lt;br /&gt;
&lt;strong&gt;[ lalex.gui.dialog ]&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;$DialogBox&lt;/em&gt;&lt;br /&gt;
MessageBox :: $DialogBox&lt;br /&gt;
PromptBox :: $DialogBox&lt;/p&gt;
&lt;p&gt;Légende : Les classes en italique précédées d'un '$' ne sont pas destinées à être instanciées (Interfaces ou classes virtuelles)&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.lalex.com/post/2003/08/05/Packages-et-classes#comment-form</comments>
      <wfw:comment>http://blog.lalex.com/post/2003/08/05/Packages-et-classes#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.lalex.com/feed/rss2/comments/57</wfw:commentRss>
      </item>
    
</channel>
</rss>