Deck.Print показывает только 2 пик, добавленные в список колод - PullRequest
0 голосов
/ 25 сентября 2018

Итак, как говорится в заголовке этого вопроса, мой Deck.Print() показывает только то, что были добавлены 2 пик.

Моя теория состоит в том, что по какой-то причине карты, которые создаются в Deck(), не меняют масть и лицевую сторону карты, поэтому они придерживаются значений по умолчанию перечислений (я предполагаю, что значением по умолчанию является то, что0 в перечислении).

Судя по тому, как я на это смотрю, нужно создать карту, наложить тип Enum на I или F, а затем добавить эту карту в deck.list.Почему это не работает?Спасибо.

class Deck
{
    public List<Card> cards = new List<Card>();

    public Deck() // Generates all cards in the deck
    {
        for (int i = 0; i < 4; i++)
        {
            for (int f = 0; f < 13; f++)
            {
                Card card = new Card();
                card.Suit = (Suit)i;
                card.Face = (Face)f;
                cards.Add(card);
            }
        }
    }

    public void Print() // prints all cards in the deck , used for testing
    {
        foreach (var card in cards)
        {
            card.Print();
        }
    }
}
enum Suit
{
    Spades,
    Hearts,
    Diamonds,
    Clovers
}

enum Face
{
    Two,
    Three,
    Four,
    Five,
    Six,
    Seven,
    Eight,
    Nine,
    Ten,
    Jack,
    Queen,
    King,
    Ace
}

class Card
{
    private Suit suit;
    private Face face;

    public Suit Suit { get; set; }
    public Face Face { get; set; }

    public void Print()
    {
        Console.WriteLine("{0} of {1}", face, suit);
    }
}

1 Ответ

0 голосов
/ 25 сентября 2018

Таким образом, ваша проблема в том, что вы читаете то, что изначально / подозрительно напоминает Защитные поля в ваших Print методах, значение inturn никогда не было установлено.

Если вам не нужны эти поля, просто используйте Авто свойства , как у вас, и удалите их, чтобы сохранить путаницу

public Suit Suit { get; set; }

Изменено

class Card
{
    // jsut delete these all together
    //private Suit suit; // you are printing this out and never changing it
    //private Face face; // you are printing this out and never changing it

    public Suit Suit { get; set; }
    public Face Face { get; set; }

    public void Print()
    {
      //  Console.WriteLine("{0} of {1}", face, suit);
      // print your actual properties not the backing fields that have never been set
      Console.WriteLine("{0} of {1}", Face, Suit);
    }
}
...