如何使用其他类的方法添加卡(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();
        }
        }

如何使用其他类的方法添加卡(21点游戏)

addCard()中未引发异常。问题出在userHand上。由于该列表是空的,因此在索引0中没有可以分配右侧值的内容,因此它抛出了一个异常范围这里指的是为其定义列表的索引范围;对于空列表,范围也是一个空集,因此是ArgumentOutOfRangeException,其中所讨论的Argument是所使用的索引(在这种情况下为0)。要向列表添加元素,请使用Add方法:

userHand = new List<Card>();
userHand.Add(blackJackDeck.addCard());
userHand.Add(blackJackDeck.addCard());

在没有看到BlackJackDeck.Cards是如何初始化的情况下,我不能说addCard()不会导致异常,但以上内容至少可以解决您对DealHand()的问题。