0

我有一个使用 C# ASP.NET 构建纸牌游戏的项目,该项目是有一个纸牌游戏网站,用户可以在其中玩耍和互相挑战。

我的朋友可以使用 C++ 构建 AI 引擎,但我如何通过 c# 与该引擎进行通信,特别是它应该是基于浏览器的在线游戏。

页面、脚本和站点系统的所有内容都很容易在 C# 中实现,但每个游戏的卡片表(与引擎的通信)是我无法想象的。

使用哪种方法,有什么建议吗?

4

1 回答 1

1

如果您真的想将 C# 与 C++ 混合使用,那么最简单的通信方式可能是创建一个包含 C 接口的 C++ DLL。然后,您可以使用P/Invoke导入此 DLL :

[DllImport("ai.dll")]
static extern int doSomething(int numCardOnTable, int[] cardOnTable,
  int numCardsOnHand, int[] cardsOnHand, out int cardToPlay);

另一种方法是使用可以直接在 C# 中导入的托管 C++:

namespace CPP_managed_code
{
  public ref class AI
  {
  public:
    int doSomething(int numCardOnTable, int[] cardOnTable, int numCardsOnHand,
      int[] cardsOnHand, out int cardToPlay)
    {
      // ...
      return 0;
    }
  };
}

还有你的 C# 代码:

using CPP_managed_code;

// ...
  unsafe private void myCSharpMethod()
  {
    AI ai = new AI();
    ai.doSomething(/*...*/);
  }

但我不建议使用托管 C++,因为它不是标准 C++。

于 2012-10-12T18:40:22.400 回答