Как мне встроить железный рубин в программу ac #? - PullRequest
4 голосов
/ 26 июля 2010

Я хочу внедрить железный рубин в грязь, которую я создаю, и по какой-то причине у меня возникают проблемы с поиском правильных примеров для начала.

Все, что я хочу сделать, - это создать игру, в которой «вы», игрок, будете программировать ботов на железном рубине, а затем я буду интерпретировать код на c # и заставлять ботов делать то, что вы от них хотите.Кроме того, я хочу сделать так, чтобы код мог быть проанализирован как строка как железный рубиновый код, который я затем буду использовать для управления ботами.

Я понимаю тот факт, что dlr и clr - две разные вещи, но не могу найти образец.Настоящая игра - это классический сервер telnet, который я с нуля написал на C # и который подключается через строгий протокол telnet.

Его можно найти здесь: pttmud.the-simmons.net: 4243 через клиент telnet, и он должен работать.

Ответы [ 3 ]

2 голосов
/ 26 июля 2010

Посмотрите на этот пост: http://www.ironshay.com/post/make-your-application-extendable-using-the-dlr.aspx. В нем показано, как вызвать код IronRuby / IronPython из C #.

0 голосов
/ 08 августа 2010

Вот полный пример того, как запустить RSpec из C #.

http://gist.github.com/465677

Однако огурец не работает.

0 голосов
/ 26 июля 2010

Не совсем 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 # стал динамическим языком программирования.

...