编写组合系统

时间:2015-05-03 22:41:25

标签: c# algorithm unity3d

如何在C#中编写一个易于维护的至少3个项目的组合系统?

示例:我们从我们的牌组中进行游戏

Card A
Card B
Card C

这是一些非常棒的组合叫做Ultra Card Combo(无论如何)。现在,如果订单很重要,这很容易写出来:

if(cards[0] == "Card A"){
   if(cards[1] == "Card B" && cards[2] == "Card C"){
     doComboThingy();
   }
}

但现在我们需要所有6种组合

A / B / C
A / C/ B
B / A / C
B / C / A
C / B / A
C / A / B

我认为这可能已经被解决了10万次,也许每个人都知道这个算法。但我找不到了!

感谢。

1 个答案:

答案 0 :(得分:0)

你可以使用LINQ:

考虑到你有一系列组合卡

var comboCards = new [] {"Card A", "Card B", "Card C"};

if(cards.Intersect(comboCards).Count() == comboCards.Count())

这意味着您正在进行卡片收集并使用组合卡获取交叉项目。结果应该与您的组合卡数相同。