Как создать «плагиновую» систему для игры AI-ботов друг против друга - In .Net - PullRequest
1 голос
/ 09 мая 2009

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

Я принимал участие в подобных вещах раньше, но никогда не был связан с приложением 'host'. И я не уверен, как это сделать.

Я буду делать это в VB.Net

Разные люди будут писать своих собственных ботов - я думаю, я бы хотел, чтобы они реализовали определенный интерфейс, который я определю. Они скомпилируют его в DLL и отправят мне. Мне нужно, чтобы хост вызывал одни и те же методы для каждой из разных библиотек «ботов», чтобы улучшить ход игры, но у меня возникли некоторые проблемы при этом.

Какой лучший способ сделать это?

Ответы [ 4 ]

3 голосов
/ 09 мая 2009

Загрузить сборку с помощью API отражения. Затем перебирайте типы в этой сборке, пока не найдете тот, который наследует от определенного вами базового класса или интерфейса. Затем создайте его экземпляр и начните вызывать методы: -)

Из образца документации:

Imports System
Imports System.Reflection

Class Class1
    Public Shared Sub Main()
        Dim SampleAssembly As [Assembly]
        ' You must supply a valid fully qualified assembly name here.            
        SampleAssembly = [Assembly].Load("Assembly text name, Version, Culture, PublicKeyToken")
        Dim Types As Type() = SampleAssembly.GetTypes()
        Dim oType As Type
        ' Display all the types contained in the specified assembly.
        For Each oType In Types
            Console.WriteLine(oType.Name.ToString())
        Next oType
    End Sub 'LoadSample
End Class 'Class1

Получив тип, вы можете создать экземпляр, используя Активатор

2 голосов
/ 09 мая 2009

Взгляните на Managed Extensibility Framework . Это позволило бы вам легко создать интерфейс (или даже базовые классы), и они могли бы просто добавить атрибут Export в свою реализацию. Вы получите все открытия и инъекции бесплатно.

1 голос
/ 09 мая 2009

В зависимости от того, насколько реалистичным вы хотите быть, вы всегда можете использовать MS Robotics Studio , которая связана с Visual Studio 2008 и содержит симулятор. Есть даже лига .

1 голос
/ 09 мая 2009

Ах, эта идея возвращает некоторые воспоминания с самых ранних дней .NET. Я предполагаю, что код содержит один или два бита интереса.

...