Cardgame, Array и Enum

Я сейчас застрял в своем проекте. Задача состоит в том, чтобы создать игру в блэкджек, используя println / outprints для визуализации реальной игры.

В настоящее время я определил значения и типы карт в двух перечислениях следующим образом:

public enum Rank {    
    TWO("2"),    
    THREE("3"),    
    FOUR("4"),    
    FIVE("5"),    
    SIX("6"),    
    SEVEN("7"),    
    EIGHT("8"),    
    NINE("9"),    
    TEN("10"),    
    JACK("J"),    
    QUEEN("Q"),    
    KING("K"),    
    ACE("A");       

    public String symbol;        

    private Rank(String symbol)    
    {    
        this.symbol = symbol;    
    }

    public String getSymbol()    
    {    
        return symbol;    
    }    
}


public enum Suit
{
    CLUB,DIAMOND,HEART,SPADES;
}

Они используются в моем классе колоды следующим образом:

public class Deck    
{

   public Suit suit;
   public Rank rank;      

   public Deck(Suit suit, Rank rank)    
   {    
       this.suit = suit;    
       this.rank = rank;    
   } 

   public Suit getSuit()    
   {    
       return this.suit;    
   }

   public Rank getRank()    
   {
       return this.rank;    
   }         
}

Я буду использовать класс колоды для своих классов, Dealerhand и PlayerHand.

Мой вопрос заключается в следующем. Я хотел бы иметь возможность взять случайную карту из массива карт со значениями реальной карточной игры.

Как мне сделать фактический массив так, чтобы он работал с моими Enums, и было бы лучше использовать arraylist?

1 ответ

Решение

Как насчет объектно-ориентированного решения?

Что такое карточка? Карта - это объект, который обладает (то есть полями экземпляра) как рангом, так и мастью. В настоящее время у вас есть ранг и масть как свойства вашего класса Deck, но я бы не стал этого делать. Колода - это набор игральных карт, который я бы обозначил так:

public class PlayingCard {
    private Rank r;
    private Suit s;
    :
    :
}

Затем вы можете инициализировать массив с объектами PlayingCard.

Вы можете перетасовать колоду (которая содержит массив PlayingCards) с помощью специального метода, который вы напишите так:

myDeck.shuffle();
Другие вопросы по тегам