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();