

#46
Posté 04 November 2012 - 23:46 PM
Première version non finie du tutorial sur les machines d'états ...ici
Je vais essayer de le mettre à jour en prenant en comptes vos remarques.
Certaines personnes voudront peut être que je rentre dans le détail du code (ou pas)
Ou que je développe plus certaines parties.
J'adapterais en fonction des commentaires.
Mon objectif est de vous faire aimer et utiliser les machines d'états.
#47
Posté 05 November 2012 - 00:07 AM
Citation
http://fr.wikipedia....i/Automate_fini
Postes ton zip ... stp ...
#48
Posté 05 November 2012 - 20:00 PM
J'ai ajouté le zip mais je ne comprends par les erreurs avec le lien.
Que veux-tu dire?
#49
Posté 05 November 2012 - 21:10 PM
Dans ton cas par exemple ta machine n'a pas de FinalState ... donc elle n'est pas FMS ( finite machine state ).
Un états fini n'est pas le client il ne peux pas relancer la machine !
Un exemple d'une FMS est le grill pain (quand la tranche de pain et éjecter l'automate est dit finit)!
Un exemple de MS est le thermostat numérique de ma chaudière ( c'est ce que tu fais avec le count<=0° alors ++ et count>=5° alors --- )!
Avec un language typé comme l'as je pensais aussi que tu utiliserais des interfaces pour definir les InitialState et FinalState.
Je suis contre le fait d'utiliser des Trigger, EntryAction et ExitAction ( c'est du microsoft ... ).
Aussi tu ne n'expliques pas ce que sont les Transitions (ConditionalTransition, SelfTransition, ...).
En soit, je sais que le tuto doit être accessible à tous, mais la c'est trop vide et je trouve à la lecture des classes que les methodes que t'as rajouté complexifie la lecture.
Est-ce que tu es d'accord avec ce que je raconte ?
#50
Posté 05 November 2012 - 22:26 PM
Citation
Un exemple de MS est le thermostat numérique de ma chaudière ( c'est ce que tu fais avec le count<=0° alors ++ et count>=5° alors --- )!
Merci Goa

C'est dingue comme une simple comparaison avec un grille pain et une chaudière permettent de mieux comprendre un mécanisme complexe.
FMS : Chauffe le pain, si le pain est chaud, éjecte le pain, fin de l'automate.
MS : Si la température est trop basse monte le thermostat, si elle est trop haute descend le, sinon ne fait rien.
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
#51
Posté 05 November 2012 - 22:47 PM

En fait le thermostat et une machine à part entière, elle est dite à états récursif.
En gros le firmware du thermostat tourne en boucle pour faire la relève d'une température (ces états sont dit conditionnel) est ainsi si la température est basse elle passe la main à un état qui allume la chaudière et si elle est égale à la température souhaitée on éteindra la chaudière.

#52
Posté 06 November 2012 - 13:22 PM
Tout d'abord, ton interpréation des machines d'états emblent être plus poussée que la mienne. Mais je ne suis pas d'accord avec tes propos.
Je ne suis pas sur de savoir en quoi différencier une machine à états et une machine à états finis est utile, mais il est bien d'avoir signaler la différence. Cependant, je ne pense pas ajouter cette subtilité dans mon tutorial car je pense qu'il peut porter à confusion et qu'il n'est pas essentiel. Comme tu l'as expliqué si ton système à un début et une fin alors ce sera un finite machine state sinon juste un machine state, dans le fond le mécanisme reste le même. Et je ne pense pas que tu ne puisses plus te reservir de ton grill pain après l'avoir utilisé une fois donc tu peux bien revenir à ton état initial après l'état final (où j'ai mal compris...).
J'aimerais rappeler que mon objectif n'est pas d'expliquer en détail ce qu'est une machine d'état mais de donner une interprétation simple dans un environnement informatique (et non mathématique ou électronique ou robotique présenté dans wikipedia) afin que des non initiés aux machines d'états puissent voir son utilité et s'en servir.
Goabonga, le 05 November 2012 - 21:10 PM, dit :
public class StateA extends State{
}
public class State implements IState{
}
public interface IState{
function enter($previousState:State):void; // called on entering the state
function exit($nextState:State):void; // called on leaving the state
function update():void; // called while in the state
function get finiteStateMachine():FiniteStateMachine;
function set finiteStateMachine($finiteStateMachine:FiniteStateMachine):void;
}
Goabonga, le 05 November 2012 - 21:10 PM, dit :
Goabonga, le 05 November 2012 - 21:10 PM, dit :
Goabonga, le 05 November 2012 - 21:10 PM, dit :
Voila je voudrais vraiment qu'on voit ce tutorial comme une alternative aux explications complexes du net. C'est un tutorial pratique

#53
Posté 06 November 2012 - 14:46 PM
Je l'ai lu.
Seulement lu, sans m'accrocher, sans fouiller le net.
Je n'ai pas compris.
Ni à quoi ça sert, ni comment on fait.
L'explication, certes électronique, à coup de machine à laver et de nombreux croquis progressifs m'avait donné l'impression de comprendre et j'avais bien hâte d'en voir l'application informatique, plus précisément AS3
Citation
Ah bon ? J'avais compris qu'une machine d'état du point de vue AS3 était une classe.
Scuz, mais pour écrire une classe c'est mieux de comprendre ce qu'elle fait, non ?
Je dis "j'avais compris", en survolant le tuto de richard lord
Il faut arriver à la fin de ton tuto pour savoir que c'est un ensemble de classe.
Par ailleurs, simple question de mise en page, quand au chapitre "définition 2" tu listes :
Citation
- - Actions (ou fonctions)
- - Etats (Un élément de départ et un nombre quelconque d’éléments d’arrivé)
- - Evènements
- - Transition
N'hésite pas, ds le paragraphe qui suit, à bien distinguer chacun des points que tu reprends en retournant à la ligne, voire en utilisant des puces, voire en utilisant des formats de caractère… ce serait plus lisible comme suit :
Citation
• Les évènements déterminent lorsqu’il faut réaliser les actions. Dans l’exemple précédent l’évènement est l’appui sur la touche Power de ma télécommande.
• Les états déterminent le contexte dans lequel sont exécutes les actions. On ne peut être que dans un seul état à la fois (Ex : Allumé ou Eteint).
• Les transitions déterminent comment passer d’un état à un autre (je ne sais pas ce qui se dans la télé lorsque l’on allume ou que l’on éteint mais je suppose beaucoup de choses).
Tu te serais alors aperçu que tu ne développes pas ds le même ordre que tu listes (c'est un détail, mais c'est l'accumulation de ce type de détails qui fait la qualité d'un document à vocation didatique).
Chapitre "Représentation graphique"
Peut-être que tu simplifies trop.
Une porte qui s'ouvre quand elle est fermée et inversement, ne mérite pas une machine d'état, assurément.
C'est un des arts de la pédagogie, trouver des exemples suffisamment simples pour être accessibles, et néanmoins typiques de ce qu'on illustre.
Citation
Déjà que tu nous parles d'état et d'action sans qu'on sache encore vraiment ce que c'est (du moins est-ce mon sentiment), voilà que tu nous compliques les choses avec sans doute des exceptions…

Ne jamais donner les exceptions en même temps que la règle, ça c'en est une de règle en pédagogie

Chapitre à quoi ça sert
Citation

Sans compter que tu ne réponds pas à la question que tu poses : "ds quel but" (pour quoi faire) mais à la question quand/ds quel contexte ? c'est pas pareil…

Le quand, c'est le chapitre suivant
ta réponse :
Citation

Là dessus enfin un peu de code, c'est pour nous montrer ce qu'il ne faut pas faire… Remarque c'est convaincant \O/
On se dit super, enfin ça démarre, je vais commencer à comprendre, et là… fini ?
un vague blabla et un zip ?

Je m'attendais à du code ds le tuto, expliqué, détaillé.
Un exemple d'implémentation avec objectif/consigne. Des considérations sur comment aborder ce genre de consignes, comment les penser puis les mettre en code.
De l'intérêt comparé d'utiliser machine d'état ou d'autres voies
Si l'idée c'est d'ouvrir des sources et de regarder - ce qui est suffisant pour beaucoup - ben pourquoi cet habillage tutoïde ?
J'imagine que ce retour ne te fais pas plaisir, et j'en suis sincèrement navrée. Vraiment.

Je me dis que c'est peut-être parce que c'est ton premier essai…
peut-être parce que je suis dure à la comprenote (en vrai, c'est de la courtoisie, ça. En règle générale je comprends les choses réputées complexes pour peu qu'on me les explique clairement)
peut-être que ce n'est pas fini…
Peut-être qu'à la lumière des retours qui te sont fait tu vas modifier les trois fois rien qui rendent le papier peu convaincant. Quelquefois, il suffit de pas grand chose.
D'ailleurs, entends bien que je ne pose un regard que sur le contenu didactique, pas sur le fond.
D'un point de vue technique, maintenant :
Citation
Moi je suis certaine que si deux choses sont différentes alors c'est bien de savoir comment les différencier.
Et tant qu'à me faire un ennemi

une tartine de tutos
#54
Posté 06 November 2012 - 15:29 PM
Bon je vais y aller aussi de ma petite critique constructive

On vois que tu connait le sujet, mais que tu ne semble pas le maîtriser suffisamment pour l'expliciter clairement, et ce qu'on sait expliquer simplement est compris et maîtrisé. Pour ma part je préfères des exemples simples dans la vie de tous les jours, quand Goa parlais de grille pain un peu plus haut j'ai fait exprès d'intervenir, bah oui une simple explication du genre me permet de saisir très rapidement le concept.
Quand Nathaly parle de classes à la sortie de ton tuto par exemple, je pense que c'est une erreur type, les machines d'états ne sont en aucun cas des classes, mais une logique d'architecture pour un programme sensée simplifier sa conception, quelque soit le langage et sa forme, un grille pain n'utilise pas un langage précis, il est mécanique et en cela représente une machine à état fini (ou automate fini). Que son implémentation en AS3 passe par une série de classe c'est autre chose, ça c'est la manière dont on construit l'automate pour ce langage

Pour moi ton tuto est trop court et survole trop certaines choses, par exemple la différence entre FMS et MS qui a mon sens est indispensable à la compréhension des automates, puisque justement c'est le sujet principal. A mon avis il faut beaucoup plus insister sur la définition claire de la chose, quitte à la décliner en plusieurs paragraphes appuyés sur des exemples précis (liens vers des ressources externes acceptés), pour simplifier la compréhension quelques schémas (animés si possibles) seraient un gros plus, des comparaisons avec des éléments du quotidien aussi (exemple du grille pain).
Une fois le sujet bien cerné (définition, règles, exceptions, schémas et exemples) tu peux te lancer dans l'implémentation en AS3, et là aussi un petit peu de détail serait profitable plutôt qu'une source commentée, autant aller au bout et expliquer chaque stade de la conception et pourquoi tel choix plutôt qu'un autre, car c'est aussi ça qui est important, nous montrer pourquoi tel choix de conception est mieux qu'un autre pour des situations types. Tu ne peux pas dire aux gens "à vous de voir si vous en avez besoin", il faut les aider à comprendre pourquoi ils en ont besoin et dans quel cas, qu'ils aient au moins une base de réflexion sinon ils ne se poseront jamais la question.
Citation
Je trouve que les deux objectifs ne sont pas remplis, si c'est une alternative aux explications complexes alors tu dois donner des exemples précis et simplifier les définitions avec des schémas et des images tirées du quotidien afin que tout le monde puisse comprendre et suivre, techniquement ta définition devrait être plus longue que celles dites "complexes" car justement tu es obligé de passer par des exemples plus nombreux. Quand au deuxième objectif (le tutorial) ce n'en est pas un, là ça se rapproche plus du TP ou l'implémentation d'un automate en AS3 avec une brève définition, ce n'est donc pas un tutorial dont le but est de nous guider pas à pas vers la compréhension d'un sujet et son implémentation

On est chiants je le reconnais mais c'est pour le bien de tous, en l'état je considérerai plus ce que tu as écrit comme un exemple d’implémentation d'un automate, mais je n'en sais pas beaucoup plus sur le fond. Le sujet est pourtant très intéressant, avec un peu plus de développement et quelques illustrations je pense que tu va y arriver.
Bon courage.
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
#55
Posté 06 November 2012 - 17:08 PM

#56
Posté 06 November 2012 - 19:33 PM
Je suis d'accord avec pas mal des retours que vous avez fait. Je ne vais pas tout reprendre mais les points marquant sont les suivants:
- La définition est trop évasive
- L'organisation du contenu est à revoir
- Le sujet est peut être à redéfinir (je m'expliquerais plus en détail par la suite)
- Les exemples sont mal choisis (besoin d'exemple plus complexe à mon goût non pas tiré du quotidien mais des exemples dans le domaine de la programmation et plus précisément du jeux vidéo)
- Le code devrait être expliqué dans le tutorial
- Les sources sont en anglais
- Définir plus précisément l'utilité et les cas d'usage d'une machine d'état
J'espère n'avoir rien oublié. Tout d'abord merci pour vos retours constructif et argumentés. Comme je l'ai annoncé je partage beaucoup de vos sentiments. Je confirme ne pas être un expert en automate fini et long d'être un spécialiste en pédagogie, mais sur ces deux points je pense pourvoir m'améliorer (grâce à votre aide tout au moins).
Ce que je ne vais pas faire:
Le point sur le quel je souhaite revenir qui je pense est la source du problème est le sujet que je pense à voir mal défini et pas assez limité.
N’étant pas un expert en automate fini, je ne souhaite pas l'expliquer de bout en bout mais donner une définition utile en programmation pour pouvoir saisir le concept et l'utiliser. J'insiste sur ce point car je ne vais malheureusement pas définir en détail un automate fini en expliquant les type d'automates, les types de transitions et autres détails car je ne pense pas qu'ils soient utiles. J'ajouterai des liens en fin de tutoriel pour les gens qui veulent allez plus loin dans le technique mais pour la programmation je n'y vois pas d'utilité (je me répète dsl).
Malheureusement, faute de temps je ne vais pas traduire les sources en français (elles seront cependant expliqué dans le tutoriel en détail)
Ce que je vais faire:
Je souhaite donc renommer le titre de ce tutoriel de la manière suivante Machines d'états et programmation (est-ce une bonne idée?)
Je vais reprendre la définition d'une machine d'état être plus précis et fournir des exemples claires dans le cadre de la programmation
Je vais décrire chacune des classes as3 du source.zip
Me fixer des objectifs, à la fin de la lecture du tutorial vous devriez pouvoir savoir expliquer ce qu'est une machine d'état en général, en informatique dans quel contexte elle est utilisée et savoir utiliser les sources pour créer votre propre machine d'état.
J'espère que malgrès tout le tutoriel sera intéressant. N'hésiter pas à me reprendre je ne suis pas du tout susceptible au contraire l’engouement autour de ce sujet m'encourage à prendre sur mon temps pour enrichir ce tutoriel. Merci encore à tous.
#57
Posté 06 November 2012 - 20:24 PM
Notamment la différenciation entre les termes FMS et FM
Goabonga, le 05 November 2012 - 21:10 PM, dit :
Je rappel donc qu'une machine d'états est parfois appelé machine à états, automate fini, machine à états fini ou machine avec un nombre fini d'états, finite state machine et que tous ces termes désignent la même chose. Par abus d'usage? Oui mais pas seulement. Celon moi la raison pour laquelle on ne différencie pas les machines fini et suposés infini, c'est qu'en informatique il n'est pas possible de représenter l'infini.
Dès lors comparer les termes machines d'états et machines à états finis n'a pas beaucoup de sens.
Il serait plus sur d'utiliser le terme Machines à états finis dans l'intitulé du titre pour ne pas qu'il y ai de discussion.
Wikipedia:
Une machine à états finis (FSM) ou automate à états finis (pluriel: automates), ou tout simplement une machine d'état, est une mathématique modèle de calcul utilisé pour concevoir les programmes informatiques et logiques séquentiels circuits. Il est conçu comme une machine abstraite qui peut être dans l'un d'un nombre fini d' états . La machine est dans un seul état à la fois; l'état où il est, à tout moment donné est appelé l'état actuel. Il peut passer d'un état à un autre lorsque déclenchée par un événement déclencheur ou d'une condition, c'est ce qu'on appelle une transition. Un FSM particulier est défini par une liste de ses états, et la condition de déclenchement pour chaque transition. (wikipedia)
Goabonga, le 05 November 2012 - 21:10 PM, dit :
Goabonga, le 05 November 2012 - 21:10 PM, dit :
#58
Posté 07 November 2012 - 00:06 AM
J'ai fait une petite update c'est pas encore fini mais je pense que c'est déjà mieux.
#59
Posté 07 November 2012 - 10:44 AM

j'ai survolé, vu du code, des exemples bien clairs voire ludiques (le loup, la chèvre et le chou) , des croquis et autres diagrammes… Tout ça est franchement encourageant.
Ravie de constater que tu n'as pas pris ombrage de nos retours un peu rudes.

Perte en matériel humain : 0, gain en tuto digne de ce nom : 1 \o/
Je le lierai et testerai quand tu l'auras fini. Prends ton temps, chez moi on dit "vite et bien ne rime à rien".
D'ailleurs, les prérequis : niveau intermédiaire, POO et interface, je crois que ça suffit. J'ose espérer qu'un niveau intermédiaire sait gérer les événements clavier

Et,
…si ce n'est déjà fait, précise quelque part (voire en intro) qu'il s'agit en fait d'un modèle de conception, ce que d'autres nomment 'design patern'
Allez ! je te laisse bosser !

une tartine de tutos
#60
Posté 08 November 2012 - 19:05 PM

Ça me démange cette histoire.……
Par exemple,
Un distributeur de boissons, genre : je mets une piece, je peux alors tourner la poignée et récupérer un bonbon, ou éjecter la piece (retour à la case "je mets la pièce") ; en considérant qu'on ne peut mettre une pièce que s'il reste des bonbons…
Ça entre bien dans le cadre de ce dont tu parles ?

une tartine de tutos
#61
Posté 08 November 2012 - 19:07 PM
Citation
Un distributeur de boissons qui distribue des bonbons, il est cassé !

(désolé du HS j'ai pas pu me retenir....)
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
#62
Posté 08 November 2012 - 20:02 PM

[edit]
… je viens d'arriver au bout du chapitre de la machine à
Je m'auto-réponds donc : oui, c'est en plein ds le sujet (… je crois)
une tartine de tutos
#63
Posté 10 November 2012 - 17:14 PM
Goabonga, le 26 October 2012 - 14:52 PM, dit :
Tu peux me dire si on peut modéliser le truc comme :

Si oui j'ai pleins de questions

d'où j'en suis de mon apprentissage, je ne vois pas pourquoi on pourrait pas… peut-être justement parce que c'est bien trop frais

tu vois quoi toi qui empêcherait

une tartine de tutos
#64
Posté 13 November 2012 - 20:34 PM
Nataly j'ai pris en compte tes retours et ajouté quelques précisions.
J'espère que le tutorial va plaire.
Dans le cas contraire je modifierais selon les retours.
#65
Posté 13 November 2012 - 22:38 PM

@angelstreet : tu as de bons exemples dans le bouquin de Mat Buckland (http://www.amazon.co...d/dp/1556220782), mais je trouve ça aussi didactique et bien expliqué dans ton tuto. Et son bouquin est terriblement bien écrit, une référence majeure.
Après le problème c'est que visiblement tu as appris ça de développeurs console/C (corrige-moi) qui utilisent effectivement ça pour de l'UI. En réalité ça ne sert plus trop à l'UI, donc tu prends des exemples pas forcément très actuels : un langage objet + MVC sont une bien meilleure solution pour faire de l'UI. D'ailleurs Flash et son API évenementielle sont majoritairement utilisés "as-is" dans les GUI de jeu (via Scaleform) et sont un standard de-facto dans l'industrie (haters gonna hate).
Comprendre : state-machine = pis-aller si langage pas objet et pas possible d'implémenter des pattern plus vastes.
Aujourd'hui, j'ai vu utiliser plutôt des states-machines :
- pour gérer les grand états d'un jeu à une échelle très "macro" (comprendre "menu -> jeu -> game over"),
- dans le code de gameplay (coffre ouvert-fermé)
- dans l'IA.
Un exemple d'IA eût permis d'atteindre le degré de pédagogie extrême désiré, et eût été peut être plus démonstratif : là effectivement on voit directement le nombre de lignes de code fondre.
Petit élargissement : définir des états/des transitions, ça revient à définir ... un langage informatique. En réalité, un compilateur ne fait que : parser du code dans un langage A, le représenter selon le même type de graphe que les illus du tuto, puis relire ce graphe et remplacer chaque instruction A pour une instruction du langage B. C'est pour ça que c'est important, les FSM, savoir les rendre déterministe (ou pas), etc. Ce tutoriel est donc méga-super-important en terme de compétences pro pour un développeur un peu désireux d'aller plus loin que le simple statut d'usager d'un langage et d'une API.
My 2 cents.
#66
Posté 14 November 2012 - 09:39 AM

Je peux donc parler en mon nom, en tant qu’apprenant.
Je ne savais pas avant.
Je connais bien sûr les principes de composition, délégation et autre encapsulages.
Il n'empêche que je ne comprends pas. Ni à quoi ça sert, ni quand s'en servir, ni comment.
Depuis je me suis intéressée au patron d'Etat (design patern). Je ne sais toujours pas si Machine d'Etat, finie ou non, a à voir…
Le tuto (voiture) que tu mets en lien, en revanche, est plutôt très bien foutu (c't'un comble pour une plateforme francophone que ce soit le tuto d'un autre, ailleurs et en anglais qui permette de comprendre

Question d'objectif sans doute, ou de public.
Il n'est pas destiné à expliquer à ceux qui ne savent pas. J'en témoigne.
Désolée de ne pas pouvoir faire un retour plus enthousiaste. Souhaitons que je sois peu représentative (ce qui est à envisager

Et merci tout de même : le modèle de conception d'Etat que je n'aurais sans doute pas fouillé tout de suite est une sympa découverte que je te dois sans conteste.

une tartine de tutos
#67
Posté 14 November 2012 - 20:22 PM
Comme l'a précisé Frangois on ne peut vraiment voir l'utilité des machines d'états dans les exemples simplistes que j'ai utilisé.
Et effectivement, je me suis trompé en indiquant que j'utilise les machines à états pour les interfaces je voulais indiquer comme Frangois l'a précisé les états d'un jeux. Je ne voulais pas utiliser un exemple d'AI comme exemple car c'est très complexe. Il faut expliquer tout d'abord ce qu'est une AI, qu'elles sont les comportements de bases (seek, pursuit, flee etc...) et ensuite réalisé et commenté un exemple avec du code. Ce pourrait être un sujet pour un prochain tutorial, Déplacement d'un personnage (AI, Machines à états, etc...).
Nataly je suis désolé que mon tutorial ne te permettes pas d'être plus à l'aise avec le concept des machines à états.
Je ne suis pas sur à 100% mais je pense que ton pattern état représente une machine d'état (Frangois?).
#68
Posté 14 November 2012 - 21:15 PM
Citation
Les différences sont que dans l'exemple canonique du pattern State :
- seul l'état interne de l'objet est pris en compte pour passer d'un état A à B, le contexte externe n'est pas pris en compte (= d'autres objets).
- enter() exit() update() pour une FSM, au lieu de insérerPièce() tournerBouton() prendreBonbon() pour un pattern State
Après dans les 2 cas les transitions sont plus ou moins explicites et les états sont découplés. Un objet implémentant un pattern State est une implémentation (trop) concrète d'une FSM.
über-pinaillage la question, j'ai dû ouvrir des livres.
#69
Posté 14 November 2012 - 21:19 PM
Citation

Sinon, j'ai re-parcouru le tuto dans sa nouvelle version, très rapidement pour le moment, je m'y plongerai plus avant sous peu.
Rien à voir avec la première version que tu nous avais proposé, là c'est complet et bien documenté, je pense que je vais me faire plaisir à le dévorer sous peu, merci à toi Angelstreet.
Tutoriels Javascript >> Pong - Taquin - Memory - Tic Tac Toe - Pendu - Snake - Proximity - Cascade - Démineur - Bejeweled - Tetris - Collisions -
#70
Posté 16 November 2012 - 20:24 PM
Le mois prochain j'essayerai de créer un nouveau tuto selon les envies de la communauté bien sur.
@ bientot
#71
Posté 01 February 2013 - 17:00 PM
#72
Posté 01 February 2013 - 18:08 PM

une tartine de tutos
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)