首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#牌类扑克牌

c#牌类扑克牌
EN

Stack Overflow用户
提问于 2015-07-29 19:59:44
回答 4查看 2.6K关注 0票数 0

我有一张具有下列属性的类卡

代码语言:javascript
复制
public int value { get; private set; }
public string suit { get; private set; }

一旦我有了一位有手的球员

代码语言:javascript
复制
List<Card> hand

我怎么把那只手分类,这样才能

( 1)主要分为套装组,最大(多数牌)组第一,最小(最少牌组)排在最后,和

2)对这些群体进行分类,从高到低

此外,这是为鲁克-几乎相同的扑克牌。数值范围从1-14,与四套西装-红色,绿色,黄色和黑色。此外,还有一张“鲁克”牌。提醒一下以防这件事有任何改变。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-29 20:09:21

代码语言:javascript
复制
var sorted = hand
    .GroupBy(l => l.Suit)
    .OrderByDescending(g => g.Count())
    .SelectMany(g => g.OrderByDescending(c => c.Value));
票数 2
EN

Stack Overflow用户

发布于 2015-07-29 20:04:07

Linq对于排序非常有用:

代码语言:javascript
复制
var sorted = hand
    .GroupBy(x => x.suit)
    .Select(x => new 
    {
        Cards = x.OrderByDescending(c => c.value),
        Count = x.Count(),
    })
    .OrderByDescending(x => x.Count)
    .SelectMany(x => x.Cards);

如果你想变得更时尚,你可以用一个suitSortOrder变成它自己的类型。这将使您完全控制的事情,如扑克牌与特殊西装。

代码语言:javascript
复制
class Suit
{
    public string Name { get; set; }
    public int SortOrder { get; set; }
}

或者,作为一个枚举:

代码语言:javascript
复制
enum Suit
{
    Hearts = 1, //1 = sort order
    Clubs = 2, 
    //...
    Rook = 5,
}
票数 4
EN

Stack Overflow用户

发布于 2015-07-29 20:09:15

创建4个链接列表(每套一张),并将每张卡插入链接列表中的相关位置(最高到最低),并为每个列表保留一个计数器。根据柜台,你会知道每套衣服有多少张牌,并且会被分类。只需将它们复制到已完成的数组即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31710004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档