本文整理汇总了C#中Mode.Match方法的典型用法代码示例。如果您正苦于以下问题:C# Mode.Match方法的具体用法?C# Mode.Match怎么用?C# Mode.Match使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mode
的用法示例。
在下文中一共展示了Mode.Match方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Play
public IEnumerable<Card> Play(IEnumerable<Card> hand, IEnumerable<Card> table, int rank, Suit suit, Mode mode, bool revolution, History history)
{
if (revolution && rank != Card.RankOfJoker)
{
rank = 14 - rank;
}
if (hand == null || hand.Count() == 0)
return null;
int count = table.Count();
// 初手はとりあえず一番弱いのを出しとく。
if (mode.Match(Mode.First))
{
var min = hand.Min(x => Game.Rank(x, revolution));
return hand.Where(x => Game.Rank(x, revolution) == min);
}
if (mode.Match(Mode.Normal))
{
if(mode.Match(Mode.SuitBound))
{
return hand.MinCard(x => Game.Rank(x, revolution) > rank && x.Suit == suit, revolution);
}
else
{
return hand.MinCard(x => Game.Rank(x, revolution) > rank, revolution);
}
}
if(mode.Match(Mode.Multiple))
{
for (int i = rank + 1; i <= 13; i++)
{
// 出せる
var c = hand.Where(x => Game.Rank(x, revolution) == i);
if (c.Count() >= count)
return c.Take(count);
// Joker含めれば出せる
if (c.Count() + 1 == count && hand.FirstOrDefault(x => x.Suit == Suit.Joker) != null)
return c.Concat(hand.Where(x => x.Suit == Suit.Joker).Take(count));
}
}
if (mode.Match(Mode.SequenceBound))
return null; //todo また未対応
if (mode.Match(Mode.Sequence))
{
if (mode.Match(Mode.SuitBound))
return hand.Sequence(rank, revolution, count, suit);
else
return hand.Sequence(rank, revolution, count);
}
return null;
}