2010-07-26 14 views
4

Je veux intégrer du rubis de fer dans une boue que je crée et, pour une raison ou une autre, j'ai de la difficulté à trouver les bons exemples pour commencer. Tout ce que je veux faire est de créer un jeu où 'vous' le joueur va programmer des bots en iron ruby ​​et ensuite je vais interperer le code en C# et faire les bots faire ce que vous voulez. Aussi, je veux faire en sorte que le code puisse être analysé comme une chaîne de caractères comme le code de fer ruby ​​que je vais ensuite utiliser pour contrôler les bots.Comment intégrer du fer ruby ​​dans un programme C#?

Je comprends le fait que dlr et clr sont deux choses différentes mais ne peuvent pas trouver l'échantillon. Le jeu actuel est un serveur telnet classique que j'ai codé en C# à partir de rien et qui se connecte via un protocole Telnet strict.

Il peut être trouvé ici: pttmud.the-simmons.net: 4243 via un client Telnet et cela devrait fonctionner.

Répondre

0

Pas exactement Ruby, ce qui est ci-dessous ce que je à pour IronPython (assurez-vous que les ensembles sont référencés en premier):

 runtime = IronPython.Hosting.Python.CreateRuntime(); 
    } 

    public void Run(string script, params object[] variables) 
    { 
     var scriptSource = runtime.GetEngineByFileExtension("py").CreateScriptSourceFromString(script, SourceCodeKind.Statements); 
     var scope = runtime.GetEngineByFileExtension("py").CreateScope(); 

     foreach (var variable in variables) 
      foreach (var property in variable.GetType().GetProperties()) 
       if (property.CanRead) 
        scope.SetVariable(property.Name, property.GetValue(variable, null)); 

     scriptSource.Execute(scope); 

Ici l'élément le plus important est le moteur de script. Vous pouvez le demander par différentes options (extension dans mon cas), et créer des scripts à partir de la mémoire ou sur des sources de disque.

Il est également possible de partager des variables, ce qui est également indiqué.

Je pense qu'il existe maintenant une meilleure façon de procéder en C# 4.0, puisque C# lui-même est devenu un langage de programmation dynamique.