begin process at 2010 02 10 12:51:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > SCRIPT ENGINE (UN DÉBUT)

SCRIPT ENGINE (UN DÉBUT)


 Information sur la source

Note :
Aucune note
Catégorie :Divers Source .NET ( DotNet ) Classé sous :script, scripting, engine, codage Niveau :Débutant Date de création :24/01/2008 Date de mise à jour :03/04/2008 20:34:48 Vu / téléchargé :5 325 / 98

Auteur : Mokost

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
J'ai recherché activement un moteur de script pour un jeu que je refais en C# XNA et je n'ai pas réussis a en trouver. Mise à part certain sous forme de dll mais bon je n'avais pas envie d'ajouter de dll en plus de celle qu'il y a déjà. Je me suis donc mis à écrire un petit moteur de script. Sous forme de class qui doit être hérité.
Il n'est pas à sa version finale et reste énormement à être améhttp://rp.devfr.com/delivery/ck.php?oaparams=2_ _bannerid=19__zoneid=62__cb=bae316337e__maxdest=ht tp://boutique.codes-sources.com/produit-avanquest- techsmith-snag-it-38746748.aspx
SnagIT, THE outil de capture !lioré(Je l'ai programmé en une semaine a peu prés).

**En somme il supporte les instructions
les plus :
for, repeat, while, switch, if
les tableaux unidimentionnel déclaration $ar=array(1,3," rrr",$i)
les opérateurs : +, -, *, /, %, &(concaténation de chaine)
les variables commences toutes par '$'
1 instruction par ligne

exemple:
$i++
$i+=1
possibilité "d'interfacer" les objets avec le script

les moins :
Quand je l'ai dévellopé (cette semaine)
par de report en cas d'erreur c'est c# qui génére les erreurs
dans les fonctions ne pas appeler d'autre fonction ex:
$i = input( strtoupper("quelquechose"),"valeur par defaut")
ou encore $r=array(random(1))

*Respecter scrupuleusement la syntaxe
ex :
for($x=0;$x<10;$x++)
{
..
..
}

fonctionnera alors que
  for($x=0;$x<10;$x++) { ..... }
ne fonctionnera pas

les chaines ne doivent pas contenir de double + ou -
ex : $r= "petit teste -- ok"
et d'autre détaille que je n'ai pas remarqué peut être
le mieux reste d'essayer

Source

  • // exemple de derivation
  • public class AdaptedScript : Scripting
  • {
  • //ajout d'un objet Form1 parent
  • protected Form1 parent;
  • public AdaptedScript(Form1 aparent)
  • {
  • parent = aparent;
  • }
  • protected override string GetStrFromOtherVar(string name, string[] param, out bool finded)
  • {
  • //dans le script $b2.top représente évidement la position Y du controle dans la fiche
  • if (name == "$b2.top")
  • {
  • finded = true;
  • return parent.button2.Top.ToString();
  • }
  • finded = false;
  • return "none";
  • }
  • protected override bool SetOtherVar(string name, string[] param, string value)
  • {
  • //name contient le nom de la variable à affecter
  • //exemple de script : $teste.x.y=12+8
  • //ici name sera $teste.x.y et value sera 20
  • //dans le cas de tableau ex $v[4,7] name sera $v et param[] = {4,7}
  • if (name == "$list")
  • {
  • parent.listBox1.Items[Convert.ToInt32(param[0])] = value;
  • return true;
  • }
  • else if (name == "$b2.top")
  • {
  • parent.button2.Top = Convert.ToInt32(value);
  • return true;
  • }
  • return false;
  • }
  • protected override string DoFunction(string name, string[] param)
  • {
  • if (name == "input")
  • {
  • if (param.Length >= 2)
  • {
  • parent.input.Text = param[0];
  • parent.input.txtResultat.Text = param[1];
  • parent.input.ShowDialog();
  • return Encode(parent.input.txtResultat.Text);
  • }
  • //necessité d'encoder les chaines de caracteres
  • return Encode(param[0]);
  • }
  • else if (name == "lcase")
  • return param[0].ToLower();
  • else if (name == "ucase")
  • return param[0].ToUpper();
  • else return base.DoFunction(name, param);
  • }
  • protected override void DoMethode(string name, string[] param)
  • {
  • if (name == "$list.add")
  • parent.listBox1.Items.Add(param[0]);
  • else if (name == "$list.clear")
  • parent.listBox1.Items.Clear();
  • else if (name == "$button.setcolor")
  • parent.button1.BackColor = Color.FromArgb(Convert.ToInt32(param[0]), Convert.ToInt32(param[1]), Convert.ToInt32(param[2]));
  • else if (name == "$b2.randcolor")
  • parent.button2.BackColor = Color.FromArgb(Convert.ToInt32(rnd.Next(255)), Convert.ToInt32(rnd.Next(255)), Convert.ToInt32(rnd.Next(255)));
  • else if (name == "show")
  • parent.mess(param[0]);
  • else base.DoMethode(name, param);
  • }
  • }
// exemple de derivation
    public class AdaptedScript : Scripting
    {
        //ajout d'un objet Form1 parent
        protected Form1 parent;

        public AdaptedScript(Form1 aparent)
        {
            parent = aparent;
        }
            
        protected override string GetStrFromOtherVar(string name, string[] param, out bool finded)
        {
         //dans le script $b2.top représente évidement la position Y du controle dans la fiche
            if (name == "$b2.top")
            {
                finded = true;
                return parent.button2.Top.ToString();
            }
            finded = false;
            return "none";
        }
        protected override bool SetOtherVar(string name, string[] param, string value)
            {
                //name contient le nom de la variable à affecter
                //exemple de script : $teste.x.y=12+8
                //ici name sera $teste.x.y et value sera 20
                //dans le cas de tableau ex $v[4,7] name sera $v et param[] = {4,7}
                if (name == "$list")
                {
                    parent.listBox1.Items[Convert.ToInt32(param[0])] = value;
                    return true;
                }
                else if (name == "$b2.top")
                {
                    parent.button2.Top = Convert.ToInt32(value);
                    return true;
                }
                return false;
            }

        protected override string DoFunction(string name, string[] param)
        {
            if (name == "input")
            {
                if (param.Length >= 2)
                {
                    parent.input.Text = param[0];
                    parent.input.txtResultat.Text = param[1];
                    parent.input.ShowDialog();
                    return Encode(parent.input.txtResultat.Text);
                }
                //necessité d'encoder les chaines de caracteres
                return Encode(param[0]);
            }
            else if (name == "lcase")
                return param[0].ToLower();
            else if (name == "ucase")
                return param[0].ToUpper();
            else return base.DoFunction(name, param);
        }
        
        protected override void DoMethode(string name, string[] param)
        {
            if (name == "$list.add")
                parent.listBox1.Items.Add(param[0]);
            else if (name == "$list.clear")
                parent.listBox1.Items.Clear();
            else if (name == "$button.setcolor")
                parent.button1.BackColor = Color.FromArgb(Convert.ToInt32(param[0]), Convert.ToInt32(param[1]), Convert.ToInt32(param[2]));
            else if (name == "$b2.randcolor")
                parent.button2.BackColor = Color.FromArgb(Convert.ToInt32(rnd.Next(255)), Convert.ToInt32(rnd.Next(255)), Convert.ToInt32(rnd.Next(255)));
            else if (name == "show")
                parent.mess(param[0]);
            else base.DoMethode(name, param);
        }
    }


 Conclusion

Dans son état actuel peut être exploitable à condition de faire trés attention au code. Peut être un bon exemple d'emploi massif de fonction récursive. Je vais essayer de l'améliorer même si il me suffit dans son état actuel. N'hésitez pas à laisser des commentaires.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   ScriptEngine
    •   ScriptEngine
      •   ScriptEngine
        •   bin
          •   Debug
            • AccesElement.sfeTélécharger ce fichier [Réservé aux membres club]269 octets
            • AxInterop.MSScriptControl.dllTélécharger ce fichier [Réservé aux membres club]8 192 octets
            • DéplacementDuBoutonb2.sfeTélécharger ce fichier [Réservé aux membres club]506 octets
            • IfetListe.sfeTélécharger ce fichier [Réservé aux membres club]268 octets
            • Interop.MSScriptControl.dllTélécharger ce fichier [Réservé aux membres club]14 848 octets
            • Repeat.sfeTélécharger ce fichier [Réservé aux membres club]127 octets
            • SwitchChaine.sfeTélécharger ce fichier [Réservé aux membres club]500 octets
            • SwitchEntier.sfeTélécharger ce fichier [Réservé aux membres club]338 octets
            • Tableau.sfeTélécharger ce fichier [Réservé aux membres club]128 octets
        •   obj
          •   Debug
            • Refactor
            • TempPE
            • AxInterop.MSScriptControl.dllTélécharger ce fichier [Réservé aux membres club]8 192 octets
            • Interop.MSScriptControl.dllTélécharger ce fichier [Réservé aux membres club]14 848 octets
            • ResolveAssemblyReference.cacheTélécharger ce fichier [Réservé aux membres club]19 929 octets
            • ScriptEngine.csproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]900 octets
            • ScriptEngine.csproj.ResolveComReference.cacheTélécharger ce fichier [Réservé aux membres club]497 octets
            • ScriptEngine.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]615 octets
            • ScriptEngine.Form2.resourcesTélécharger ce fichier [Réservé aux membres club]3 059 octets
            • ScriptEngine.Properties.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • ScriptEngine.csproj.FileList.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier560 octets
        •   Properties
        • Form1.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 935 octets
        • Form1.Designer.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 894 octets
        • Form1.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 907 octets
        • Form2.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier337 octets
        • Form2.Designer.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 617 octets
        • Form2.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 188 octets
        • Program.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier484 octets
        • Script.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier37 989 octets
        • ScriptEngine.csprojTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 594 octets
      • ScriptEngine.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier925 octets
      • ScriptEngine.suoTélécharger ce fichier [Réservé aux membres club]35 840 octets

Télécharger le zip


 Sources du même auteur

TESTER SI LA SOURIS A VRAIMENT QUITTER UN CONTROL : MOUSELEA...
Source avec Zip Source avec une capture Source .NET (Dotnet) UN JEU OU IL FAUT ALIGNER 4 COULEURS POUR CASSER DES BLOCKS...

 Sources de la même categorie

Source avec une capture TOOLTIP TEXT POUR LA LISTE DÉROULANTE D'UN COMBOBOX par whismeril
Source avec Zip Source avec une capture Source .NET (Dotnet) LOGIN (XML) par DanMor498
Source .NET (Dotnet) WEBTESTPLUGIN - IGNORER DES URLS LORS D'UN TEST WEB VISUAL S... par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) EXERCICE DE CALCUL MENTAL par Sat7121
Source avec Zip Source avec une capture Source .NET (Dotnet) TRADUCTEUR ALGO VISUAL BASIC .NET/C# par rhonin33

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ADDYSCRIPT: UN MOTEUR DE SCRIPT POUR .NET par addy
Source avec Zip Source .NET (Dotnet) CRÉER UNE INSTALL AVEC NSIS par lagoelle
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE SCRIPT SQL DE DONNÉES par thiosyiasar
Source avec Zip Source .NET (Dotnet) SCRIPTING .NET par sebseb42

Commentaires et avis

Commentaire de wizad le 24/01/2008 00:31:55

Question bête, pourquoi ne pas avoir utiliser le c# système de script? étant donné qu'il est trés facile de compiler à la volée du c# grace aux classe du framework (Microsoft.Csharp ...) vous auriez pu obtenir quelque chose de performant et vous concentrez sur l'intégration à votre jeu. Néammoins je regarderais votre code un peu plus tard afin de le noté en tant que tel.

Commentaire de Mokost le 24/01/2008 09:56:46

Pour les raisons suivantes :
*Je voulais une engine trés simple.
*Ces scripts n'ont pas besoin d'être compilés.
*Je n'ai pas trouvé d'exemple pour interfacer les objets de mon programme avec le "c# script systeme" j'ai fait une recherche avec google mais ça n'a rien donné
*C'était une occasion de créer une classe pareille, c'est mon premier executeur de script que je fais à partir de rien quand même
*Ca peut être un bon exemple pour ceux qui veulent en faire une dans un autre language

Ce sont a peu prés tout les raisons qui m'on poussé à faire ça

Commentaire de FREMYCOMPANY le 28/01/2008 19:56:41

Tu pourrais t'inspirer de ce code (adapté pour VB, mais qui permet d'implémenter le C# aussi (pas le shell mais le systeme sur lequel il est basé) : http://www.vbfrance.com/codes/VB-NET-VBSHELL-NET-SORTE-POWERSHELL-EXECUTER-VB_41103.aspx

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pointeur souris [ par nanatte ] Bonjour,Est-il possible dans un script ASP Vb Serveur de modifier le pointeur de la souris lors l'exécution du script (ex : passer en sablier pour fai application C# scriptée ? [ par sbulliffon ] Bonjour, Je souhaite réaliser une application en C# dont le déroulement serait contrôlé par un script très simple. Par exemple : Fonctions codée en C# Libraire de Codage RSA en Open Source [ par finarfin95 ] Je suis à la recherche d'une libraire open source de cryptage RSA.Si vous savez ou trouver, merci de faire suivre... Codage de pages aspx [ par oulaich ] Les caractères comme é, à... ne s'affiche pas sur ma page web aspx, est-ce qlq 1 à une idée?Cela m'est indéférent. Faire fonctionner Webcamvideo (le script) [ par blaire ] Salut, J'ai télécharger Webcamvideo dans la rubrique multimedia, mais j'n'arrive pas à le faire fonctionner....Si quelqu'un pouvait m'aiguiller ça ser faire un script [ par Fildomen ] Salutje reviens &#224; mes habitudes , savez-vous comment faire un script (un tit langage)??? des documents,tutoriaux pour faire cela??MerciYaoYao !! Au secours!!!c# et access [ par lili la tigresse ] Bonjour &#224; tous je d&#233;bute en c#j'aimerai afficher le r&#233;sultat d'une requ&#234;te faite sur une table access dans un tableau html, sans a Aidez-moi SVP histoire de parseur simple(j'espère) [ par gimli123 ] Bon salut tout le monde, je suis en train d'essay&#233; de cr&#233;&#233; un mini langage de script en fait l'interpr&#233;teur, et j'ai une 1er quest Upload et script php [ par keerigan ] Bonjour , J'ai un formulaire php qui accepte en entree un fichier qui est ensuite pars&#233; par le php. voici le sricpt : &lt;?phpif( isset( $_FILES[ Creation de Procedure Stockées par script [ par Letaleur_julien ] Bonjour. J ai un script, qui contient toutes mes proc&#233;dure, que j ai g&#233;n&#233;r&#233; avec Sql Server, et je voudrai par l'intermediaire d'


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales