Forum dédié à l'apprentissage du making (art de créer des JV) sous Rpg Maker (spécialisé sous VX/VX Ace), les demandes de ressources graphiques pour les graphistes du forum, la standill compétition, l'entraide, et une multitude d'autres activités !
 
AccueilCalendrierFAQRechercherMembresGroupesS'enregistrerConnexion

Partagez | 
 

 Interpreter son propre code

Aller en bas 
AuteurMessage
nuki
Momie puante
Momie puante
avatar

Messages : 19
Avertissements :
100 / 100100 / 100


MessageSujet: Interpreter son propre code   Dim 19 Juin - 13:32

Ce tutoriel sera principalement théorique et portera sur interprétation de son propre langage.
Vous vous demanderez peut être quel est le but? Et bien il permet, par exemple d'offrir une manière plus abordable (pour les event makers par exemple) d'utiliser des composantes scriptées. Un des exemple le plus connu dans la communauté francophone est par exemple, l'Event Language développé par Avygeil et Roys qui admet sa propre syntaxe.
Pour mon module de QuickSave, il existe une syntaxe alternative. Par exemple, au lieu de faire Appeler Script> Quicksave::save(1) qui sauvegardera la partie sur le slot 1, il est possibel de faire Appeler Script> Save in 1, bien que la différence est minime, elle permet de faire une petite abstraction de la couche script au profit d'une syntaxe plus verbeuse.
Mais comment mettre ce genre de petit raccourci en oeuvre? Nous allons nous intéresser a la première méthode.

De la méta-programmation
Concrètement la méta programmation nous permet de décrire un comportement ou un autre langage durant cet explication, nous ne ferons que de la méta programmation. Une des fonction qui devrait venir aux scripteurs en premier lieu, lorsqu'ils pensent à méta programmation est la fonction Eval qui permet d'interpréter une chaine de texte comme du code ruby. Par exemple, cette commande:
Code:
eval("print LOL")
affichera une alerte avec le contenu de la constante LOL. Les plus perspicaces auront compris que c'est cette commande qui sera appelé lorsqu'on fait appel à une commande "Appeler Script" ou par exemple a une condition Si_Script.

Modifier notre commande événement
Une des solutions les plus primaire vise à parler de commandes et non de langage défini par une syntaxe précise. Pour effectuer des "customs commande", il va falloir modifier notre commande "Appeler script".
Pour ce faire, nous allons analyser son comportement:
Code:
  def command_355
    script = @list[@index].parameters[0] + "\n"
    loop do
      if @list[@index+1].code == 655        # Second line of script and after
        script += @list[@index+1].parameters[0] + "\n"
      else
        break
      end
      @index += 1
    end
    eval(script)
    return true
  end
La commande Appeler script correspond à la commande_355, elle se trouve dans game Interpreter. Nous voyosn que, a la fin de la méthode, on évalue une variable script qui correspond donc à une chaine de texte. A ce stade, il suffirait donc de remplacer le eval(script) par un custom_eval(script).
C'est donc ce que nous allons faire.
Nous allons créer une méthode:

Code:
def custom_eval(script)
   if(commande_1)
      #Executer la commande 1
   else
      eval(script)
   end
end
Dans notre if, nous allons donc mettre une commande. Je me permet de rebondir sur mon script de Quicksave (ou Quicksave::save(x)) sera l'exemple.
Nous allons établir une syntaxe pour que Save in X sauve dans le slot X.
Pour cela, nous allons utiliser un regex. rappellons que l'opérateur de test d'un regex sera =~.
(le cours ne portant pas sur les regex's, je ne m'attarderai pas sur sa construction)
Code:
def custom_eval(script)
   if(script =~ /^Save in [0-9]$/ )
      evaluation = script.split(" in ")
      Quicksave::save(evaluation[1].to_i)
   else
      eval(script)
   end
end
Et voila, notre méthode peut interpréter le cas ou on lui demande une sauvegarde. Le role du split est de faire une découpe de la chaine. Complétons cette méthode en modifiant les autres méthodes du module Quicksave:
Code:

def custom_eval(script)
   if(script =~ /^Save in [0-9]$/ )
      evaluation = script.split(" in ")
      Quicksave::save(evaluation[1].to_i)
        elsif(script =~ /^Load from [0-9]$/ )
      evaluation = script.split(" from ")
      Quicksave::load(evaluation[1].to_i)
   else
      eval(script)
   end
end
etc.
Comme vous pouvez le voir, cet interpréteur rapide est facile a mettre en place et il suffit de remplacer, dans la commande_355 le eval(script) par custom_eval(script).
Pour pousser le vice plus loin, il est aussi possible de modifier les conditions pour qu'elles fassent référence a notre interpréteur en modifiant la ligne 638 de note Game_Interpreter.

Pistes de recherches pour la suite
Cette publication était relativement courte et facile a mettre en place, cependant, il serait intéressant de réfléchir a un vrai langage au sein de Rm respectant sa propre syntaxe.
Pour aller plus loin, il serait amusant de s'intéresser aux automates non déterministes nous permettant, pourquoi pas, d'interpréter, au sein de notre commande Appeller un script, un langage respectant la logique Ruby mais à la syntaxte abordable à n'importe quel Event Maker, ayant de l'urticaire à la prononciation du mot RGSS.

Merci de m'avoir lu. Bien à vous, NUKI.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
nuki
Momie puante
Momie puante
avatar

Messages : 19
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 11:34

Il n'est pas bien?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Limit' the fox
Modérateur général
Modérateur général


Messages : 1227
Age : 21
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 15:42

si mais je scripte pas , alors je ne sais pas trop ^^'
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
XakuX
Professeur - Script
Professeur - Script
avatar

Messages : 446
Age : 24
Avertissements :
89 / 10089 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 16:07

Ah oui, j'voulais le commenter justement !
Le problème avec les mecs qui ont déjà un pied (même plutôt une jambe) dans la programmation et qui essaye d'expliquer aux autres, même si tous ce qu'il dise est juste, c'est que c'est imbittable pour le reste de la population -.-
J'ai dû relire trois fois pour comprendre qu'en fait c'est un truc assez con, mais tu as voulu tellement en rajouté autour en voulant utilisé un vocabulaire précis qu'il en devient finalement quasi incompréhensible pour qui n'a pas déjà un moindre niveau en script, et finalement ceux qui ont le niveau de tout comprendre n'ont plus besoin de ton tutoriel x) (enfin dans ce cas là c'est plutôt l'idée qui est à retenir plus que l'aspect instructif, justement)
Ce n'est pas la peine d'apprendre la multiplication à qui ne sais pas additionner Smile
J'essayerai de refaire se tutoriel de façon à ce qu'il ait une approche beaucoup plus simple, même si au final les gens n'auront sans doute pas tout à fait compris tout le sens de ce qu'ils ont fait Wink

Enfin en tout cas merci pour l'idée, ça pourra être intéressant pour faciliter l'utilisation de mes modifs de code Wink (par contre je n'irai peut-être pas faire une nouvelle syntaxe entière avec ça x) )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Limit' the fox
Modérateur général
Modérateur général


Messages : 1227
Age : 21
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 16:37

je valide ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
XakuX
Professeur - Script
Professeur - Script
avatar

Messages : 446
Age : 24
Avertissements :
89 / 10089 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 16:58

Oui oui, même si je doute que ça serve à grand monde ici dans l'état actuel des choses Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Limit' the fox
Modérateur général
Modérateur général


Messages : 1227
Age : 21
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 17:15

oki , validé je déplace ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Viper-RKO
Modo' tuto
Modo' tuto
avatar

Messages : 216
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mar 21 Juin - 17:39

Citation :
Oui oui, même si je doute que ça serve à grand monde ici dans l'état actuel des choses

Bwarf, les appels de scripts peuvent servir suivant les systèmes que l'ont veut.
J'ai moi-même dû en user dans des events ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
nuki
Momie puante
Momie puante
avatar

Messages : 19
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mer 22 Juin - 16:47

XakuX a écrit:
Ah oui, j'voulais le commenter justement !
Le problème avec les mecs qui ont déjà un pied (même plutôt une jambe) dans la programmation et qui essaye d'expliquer aux autres, même si tous ce qu'il dise est juste, c'est que c'est imbittable pour le reste de la population -.-
J'ai dû relire trois fois pour comprendre qu'en fait c'est un truc assez con, mais tu as voulu tellement en rajouté autour en voulant utilisé un vocabulaire précis qu'il en devient finalement quasi incompréhensible pour qui n'a pas déjà un moindre niveau en script, et finalement ceux qui ont le niveau de tout comprendre n'ont plus besoin de ton tutoriel x) (enfin dans ce cas là c'est plutôt l'idée qui est à retenir plus que l'aspect instructif, justement)
Ce n'est pas la peine d'apprendre la multiplication à qui ne sais pas additionner Smile
J'essayerai de refaire se tutoriel de façon à ce qu'il ait une approche beaucoup plus simple, même si au final les gens n'auront sans doute pas tout à fait compris tout le sens de ce qu'ils ont fait Wink

Enfin en tout cas merci pour l'idée, ça pourra être intéressant pour faciliter l'utilisation de mes modifs de code Wink (par contre je n'irai peut-être pas faire une nouvelle syntaxe entière avec ça x) )
Non. Le but de ce tutoriel est une initiation à la méta programmation.
Il n'est pas question de le transformer une a ramassis d'ineptie comme tes cours sur le script.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Limit' the fox
Modérateur général
Modérateur général


Messages : 1227
Age : 21
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mer 22 Juin - 17:00

Citation :
Non. Le but de ce tutoriel est une initiation à la méta programmation.
Il n'est pas question de le transformer une a ramassis d'ineptie comme tes cours sur le script.
inepties ? insultes ou blagues ? Eclaircis moi ça ou je serait dans l'obligation de sauver XakuX et ça ; c'est chiant
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Thérapie
Fondateur †
Fondateur 	†
avatar

Messages : 2276
Age : 22
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mer 22 Juin - 17:05

Limit' j'en ai déjà parlé avec xak' t'inquiètes Wink C'est parce que ses cours sont formulés assez "maladroitement", il m'a dit qu'il ferais gaffes la prochaine fois et qu'il va les corriger. Ensuite connaissant un peu nuki, mélange de zang' et xak', il a dit cela d'une manière très gentille
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://therapie-leforum.1fr1.net
Limit' the fox
Modérateur général
Modérateur général


Messages : 1227
Age : 21
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Mer 22 Juin - 17:07

mouais , ça passe pour cette fois , mais attention , je suis pas gentil avec les pas-gentils
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
nuki
Momie puante
Momie puante
avatar

Messages : 19
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Jeu 23 Juin - 21:57

Lol, moi un mélange de Xaket Zang... hahahaha
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Zangther
Première classe lézard
Première classe lézard
avatar

Messages : 99
Avertissements :
100 / 100100 / 100


MessageSujet: Re: Interpreter son propre code   Jeu 23 Juin - 22:03

Lol, lui un mélange de Xaket et moi... hahahaha

@théra' -> Oui ça fait plusieurs posts ou j'aime vous mélanger x) Je trouve que ça correspond assez bien. Bref calme sur flood hors des topics.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Interpreter son propre code   

Revenir en haut Aller en bas
 
Interpreter son propre code
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» J'ai 2 code pour avoir 6 razoirs Shick Induition DÉJÀ DONNÉ
» Vidéos - générateur de code pour vidéo et player
» [Nocturne] Demande d'aide pour code css complet s'il vous plait.
» Pseudo-objet - Générateur de code
» compresseur de code

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
La thérapie du making - Rpg maker :: Espace forum :: Cours :: Bazar de la connaissance :: Tutoriaux acceptés-
Sauter vers: