4

作成中の泥に鉄のルビーを埋め込みたいのですが、何らかの理由で、開始するための正しい例を見つけるのに苦労しています。

私がやりたいのは、「あなた」のプレーヤーが鉄のルビーでボットをプログラムし、次に C# でコードを解釈し、ボットにあなたが望むことをさせるゲームを作成することだけです。また、ボットを制御するために使用する鉄のルビ コードとして、コードを文字列として解析できるようにしたいと考えています。

dlr と clr が 2 つの異なるものであることは理解していますが、サンプルが見つかりません。実際のゲームは、C# でゼロからコーディングした古典的な telnet サーバーであり、厳密な 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# 自体が動的プログラミング言語になったので、C# 4.0 にはもっと良い方法があると思います。

于 2010-07-26T00:47:43.657 に答える