C#扑克游戏:没有给出响应所需形式参数的论据

时间:2015-11-27 03:03:05

标签: c# class

我正在使用C#进行扑克游戏,随机生成玩家的牌,然后检查是否有任何组合并确定获胜者。

在我的播放器类中,这会产生一个玩家的手,我得到一个错误,说“没有参数响应Card.Card(Card.Suit,Card.Number)所需的正式参数'”当我将鼠标悬停在'播放器'上并且迄今为止无法解决问题,尽管已对其进行了研究。

以下是代码:

class Player : Card
{
    Deck PlayerDeck = new Deck();
    public List<Card> hand = new List<Card>();

    public void GenerateHand()
    {
        for (int i = 0; i < 5; i++)
        {
            Card c = PlayerDeck.RandomCard();
            hand.Add(c);
            PlayerDeck.deck.Remove(c);
        }
    } 

如果需要,可以使用Card类:

class Card
{
    public enum Combination
    {
        None, Flush, StraightFlush, Poker,
        ThreeKind, FullHouse, TwoPairs, Pair
    }

    public enum Suit
    {
        Spades, Hearts, Clubs, Diamonds
    }

    public enum Number : int
    {
        Ace = 1, Two, Three, Four, Five, Six, Seven,
        Eight, Nine, Ten, Jack, Queen, King
    }

    public Suit suit;
    public Number number;
    public Card(Suit s, Number n)
    {
        suit = s;
        number = n;
    }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

从Player的类定义中删除: Card。播放器在逻辑上不是卡,因此继承没有意义。

为了创建一个继承自另一个类的类的实例,必须首先调用基类中的构造函数。在这种情况下,Card的唯一构造函数需要两个参数。但是你还没有为Player调用任何构造函数来为Card调用该构造函数。在这种情况下,编译器会查找Card的默认(无参数)构造函数,该构造函数不存在,因此会出错。