IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Créer son interpréteur de "script perso" [Fait]


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Créer son interpréteur de "script perso"
    Bonjour bonjour,

    J'espère qu'en lisant mon titre, vous allez pas direct me rire à la figure, mais bon j'ai peu d'espoir!

    Alors voilà, je suis loin de tout professionnel dans le domaine, ça fait seulement plusieurs années que je me fais de l'argent de poche en créant des pages web normales et des systèmes web un peu plus poussés pour des gens (amis, parents d'amis qui ont des entreprise etc...).

    Récemment je me suis lancé dans l'idée de faire un petit web-game comme on en voit tant (Creaturz, O-game, Vendetta), dans le style "rpg-stratégie" qui incorpore un système de mapping tile-set. Pour ceux qui connaissent pas, tile, c'est le mot anglais pour dire "case" et c'est tout bêtement une carte de jeu formée par un damier de plusieurs carrés (cases)...

    Je l dis tout de suite, c'est juste un amuse-neurone, rien de sérieux, ni rien d'aboutit, d'ailleurs, je suis seul sur mon proj.

    Comme j'aime bien aller jusqu'au bout de mes idées, j'ai créé une bibliothèques d'images de 25 par 25 px, que je classe dans une arborescence, après une upload standart en php. Depuis ma bibliothèque, je clic-glisse mes éléments pour les placer sur ma carte et je construit ainsi un décors. Chaque élément du terrain surcharge les objets "tiles" de ma carte et gèrent les choses basiques comme "la case est elle foulable ou non", et la gestion des z-index... rien de bien compliqué...

    Ah oui, j'ai oublié... je me sers de php 5.1, de javascript et des utilisations dérivées du genre AJAX. Je code "bien" en JS (genre j'utilise le DOM et pas le innerHTML de MS).

    Pour le moment, j'arrive sans aucun problème à avoir un perso qui se déplace (avec un path-finder) d'une case à l'autre, en respectant les cases foulables/non-foulable, ainsi que les profondeurs... (imaginez le perso qui circule sur un chemin qui passe sous un pont, puis va sur le pont...)

    Mais après ça, j'ai eu un gros problème... que je n'arrive toujours pas à résoudre. Une fois que mon perso se déplace bien, je voudrais pouvoir agrémenter mon éditeur de map d'un éditeur d'évènement (PNJ qui se balade, quête qui s'active, porte qui se dévérouille etc...).

    Je cherchais une solution puissantes et j'ai téléchargé/installer le logiciel RPGMAKER pour me donner des idées. Je me suis rendu compte que l'idée générale était bien la même que celle que j'avais eu, mais pour la gestion de ces évènement, le logiciel permet de scripter les occurences d'évènement que l'on place sur la carte.

    Par exemple, on peut placer un PNJ (perso non joueur) et scripter des petites commandes... par ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <>un pas à droite
    <>un pas à droite
    <>un pas en bas
    <>un pas en bas
    on peut même aller beaucoup plus loin: poser des conditions if...elseif...else, des boucles while et autres...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <>Message:Va me ramener mon chat que j'ai perdu!
    <>Proposer un choix: Ok pas de prob!, Non tu rèves!
        :Si [Ok pas de prob!] faire:
        <>Message: Merci t'es un brave!
        <>Interupteur[Quete du chat]: activé
        :Si [Non tu rèves!] faire:
        <>Message: T'es qu'un sal type!
        :Fin
    Il est aussi possible d'enregistrer des variables que l'on vérifie grâce à ce genre de scripte et de faire toute sorte d'autres choses.

    Dans le cas de ma petite applic, si je place l'occurence d'un évènement (enfin... ce que j'appelle un évènement) sur ma case, il me faut ensuite le scripter avec une syntaxe similaire. J'enregistre ensuite ces diverses données dans ma bdd, dont la position de l'évènement, et surtout, le script sous une forme TEXT.

    Lorsque ma carte est chargée pour le jeu, je dois récupérer ce script et l'interpréter côté serveur (php) pour transmettre à ma page les différentes actions à réaliser. Mais pour ça, évidemment, bing, problème!

    Ma question est donc la suivante (après tant d'explication, mais le problème est assez singulier pour justifier tout ça, d'ailleurs google n'est plus mon ami...):

    Est il possible, et y a t il une solution élégante en php pour écrire une petite applic qui pourrait interpréter un code simpliste comme celui ci...?


    Pour le moment il s'agit surtout de pouvoir gérer des variables "utilisateurs" et de pouvoir gérer des if/elseif/else... les boucles et toutes les petites autres subtilités viendront plus tard... ou jamais!

    Désolé de vous embêter avec mes problématique hautement personnelles et merci pour les réponses s'il y en a!

    A+

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    Je sais pas trop si ça correspond à ta demande, avec Php y a le système des templates, une lecture de ce tutoriel t'en diras plus http://a-pellegrini.developpez.com/t...php/templates/.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 66
    Points : 64
    Points
    64
    Par défaut
    Salut,

    Ton problème m'a l'air plus de l'ordre de l'algorithmique et de la conception que du PHP.

    Si tu es absolument sur d'avoir besoin de coder un interpreteur, alors tu peux regarder du coté des tutoriels sur la mise en oeuvre du design pattern Interpreter

    http://www.fluffycat.com/PHP-Design-...s/Interpreter/

    Si en revanche, tu peux te contenter d'utiliser l'abstraction naturelle de la POO, c'est a mon avis un meilleur choix ( php.net/eval si tu veux stocker du code en base de donnée )

    Si ton jeux ressemble a un jeux de l'oie ( un machin avec un nombre aleatoire qui determine la case d'arrivée ) et que tu veux que les elements qui sont sur le chemin soit pris en compte, tu peux egalement voir du coté du design pattern Sujet / observateur.
    La case a cocher serait le sujet observé, l'observateur serait ton gestionnaire ( le plateau de jeux dans le cas d'un jeux de l'oie ), et l'evenement propagé serait "Machin m'est passé dessu" :

    http://www.a-scripts.com/object-orie...erver-pattern/


    PS :

    Si ces solutions sont trop génériques et que tu as du mal a les adapter a ton cas, tu peux repondre a la suite, mais tu devrais demander a deplacer le sujet dans "Algorythmie" conception.
    ZCE & Mysql Certified Developper

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bonjour, et merci pour ces réponses...

    Entre hier et aujourd'hui j'ai eu le temps de cogiter un peu sur l'affaire et de continuer mes recherches. Comme je le craignais, vos propositions me sont tout à fait inconnues et je suis sur qu elles me demanderont une bonne dose de concentration. Mais qui ne tente rien n a rien non?

    En ce qui concerne le système de template. J'avais passé en revues quelques solutions proposées par ma "bible" du php sans réellement les envisager... Je ne vois pas à l'heure actuel la solution que cela pourrait me donner, mais je vais creuser...

    J'avais par contre bien tilté sur le système eval. Il me semble en effet pour tous les cas de figure que j'ai imaginé pour mon jeu, cela devrait convenir. Par contre, je ne vois pas en quoi eval est spécifique de la POO... Aussi, il me semble avoir lu dans bien des tutos et articles qu'il était déconseillé d'utiliser cette fonction. Outre l'aspect "code sale et imprévisible" qu il y a lors de la production de code dynamique, j'ai cru comprendre que la fonction était très lente et de pratique asset malpropre... En js, on me l a d ailleurs fortement déconseillée. Ton smiley ne me rassure pas trop non plus.

    PS: Mon projet n a rien d un jeu de l oie mais l'exemple est tout à fait similaire (à condition de pouvoir éditer ses planches de jeu avant de lancer celui ci.)

    Je me plonge dans la lecture (il est tard)!

    PS: je cherche toujours comment déplacer mon sujet....


    Edit: on m' a aussi proposé de créer un parser en php pour mon "code perso"... y a t il de la doc qlq part pour se faire une idée?

Discussions similaires

  1. Gérer du script entre quote
    Par Alexino2 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/07/2006, 23h44
  2. [C#] Créer son journal d'évènement perso
    Par globeriding dans le forum ASP.NET
    Réponses: 17
    Dernier message: 16/01/2006, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo