我正在尝试创建一个基本的扑克游戏使用c#。
到目前为止,我已经使用以下三行代码随机得到了卡片:
Suit suit = (Suit)randomCardSelector.Next(4);
Value value = (Value)randomCardSelector.Next(13);
Card abc = new Card(suit, value);现在我试图实现的是,发牌只针对那些还没有发过牌的人。现在,我创建了两个“字典”集合,一个叫做'deck‘,另一个叫做’called‘。我最初考虑将所有的牌添加到牌组中,然后当在桌面上处理时,它们应该从牌组中删除,并使用卡的唯一密钥添加到处理中。
你认为最好的方法是什么?我基本上不想重复的卡片,例如王牌红心和王牌红心组合是在同一副牌。我如何防止这种情况发生?
发布于 2011-03-04 08:52:36
我认为最简单的方法是:
答:覆盖GetHashCode()函数,并使用卡片值和纸牌套装创建一个哈希。B:实现IEquatable<Card>并比较套装和值。
然后,只需要一个包含所有已发牌的HashSet<Card> (不需要字典),并让您的卡片生成器检查卡片是否已经存在。
https://stackoverflow.com/questions/5188417
复制相似问题