如何使用其他类的方法添加卡(21点游戏)
本文关键字:21点 游戏 添加 方法 何使用 其他 | 更新日期: 2023-09-27 18:24:58
我正在尝试我的第一个程序,一个21点任务。我已经在我的BlackJackDeck类中构建了一堆方法,现在我想开始在我的程序类中实现它们,但当我试图添加一张卡时,我遇到了一个参数超出范围的异常。我试过做一个userHand。Add,我试过用userHand[0]=,但我只是没有实现。我猜最大的问题是我的BlackJackDeck类中的addCard方法。我还尝试过使用Cards[0]而不是.Count方法。卡片是此时随机的卡片列表。
BlackJackDeck.cs
public Card addCard()
{
Card cardToAdd = Cards[Cards.Count-1];
Cards.RemoveAt(Cards.Count-1);
return cardToAdd;
}
CS 程序
class Program
{
static List<Card> userHand;
static List<Card> dealerHand;
static BlackJackDeck blackJackDeck;
static void Main(string[] args)
{
blackJackDeck = new BlackJackDeck();
blackJackDeck.shuffleCards();
DealHand();
}
static void DealHand() {
userHand = new List<Card>();
userHand[0] = (blackJackDeck.addCard());
userHand[1] = (blackJackDeck.addCard());
Console.WriteLine("Card1: {0} of {1}", userHand[0].Face, userHand[0].Suit);
Console.WriteLine("Card2: {0} of {1}", userHand[1].Face, userHand[1].Suit);
Console.ReadLine();
}
}
addCard()
中未引发异常。问题出在userHand
上。由于该列表是空的,因此在索引0
中没有可以分配右侧值的内容,因此它抛出了一个异常范围这里指的是为其定义列表的索引范围;对于空列表,范围也是一个空集,因此是ArgumentOutOfRangeException
,其中所讨论的Argument是所使用的索引(在这种情况下为0
)。要向列表添加元素,请使用Add
方法:
userHand = new List<Card>();
userHand.Add(blackJackDeck.addCard());
userHand.Add(blackJackDeck.addCard());
在没有看到BlackJackDeck.Cards
是如何初始化的情况下,我不能说addCard()
不会导致异常,但以上内容至少可以解决您对DealHand()
的问题。