我正在使用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;
}
}
感谢您的帮助。
答案 0 :(得分:2)
从Player的类定义中删除: Card
。播放器在逻辑上不是卡,因此继承没有意义。
为了创建一个继承自另一个类的类的实例,必须首先调用基类中的构造函数。在这种情况下,Card的唯一构造函数需要两个参数。但是你还没有为Player调用任何构造函数来为Card调用该构造函数。在这种情况下,编译器会查找Card的默认(无参数)构造函数,该构造函数不存在,因此会出错。