4

我想将铁红宝石嵌入我正在制作的泥浆中,但由于某种原因,我无法找到正确的示例来开始使用。

我想做的就是创建一个游戏,其中“你”玩家将用 Iron ruby​​ 编写机器人,然后我将用 c# 解释代码并让机器人按照你的意愿去做。另外,我想这样做,以便可以将代码解析为字符串作为铁红宝石代码,然后我将使用它来控制机器人。

我了解 dlr 和 clr 是两个不同的东西但找不到样本的事实。实际游戏是一个经典的 telnet 服务器,我从头开始用 C# 编写代码,并通过严格的 telnet 协议进行连接。

它可以在这里找到:pttmud.the-simmons.net : 4243 通过 telnet 客户端,它应该可以工作。

4

3 回答 3

2

看看这篇文章:http ://www.ironshay.com/post/make-your-application-extendable-using-the-dlr.aspx 。它展示了如何从 C# 调用 IronRuby/IronPython 代码。

于 2010-07-26T05:09:51.003 回答
0

下面是如何从 C# 运行 RSpec 的完整示例。

http://gist.github.com/465677

不过黄瓜没用。

于 2010-08-07T23:54:49.653 回答
0

不完全是 Ruby,下面是我对 IronPython 所做的(确保首先引用程序集):

        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);

这里最重要的元素是脚本引擎。您可以通过不同的选项(在我的情况下为扩展)请求它,并从内存或磁盘源中创建脚本。

也可以共享变量,这也显示了。

我认为现在在 C# 4.0 中有更好的方法,因为 C# 本身已成为一种动态编程语言。

于 2010-07-26T00:47:43.657 回答