Cardgame,Array和Enum

问题描述:

我目前被困在我的项目中。这个任务是创建一个BlackJack游戏,使用println/outprints来显示实际的游戏。Cardgame,Array和Enum

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; 
} 

这些在我的甲板Class用于如下:

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。

我的问题如下。我希望能够从一系列卡片中随机抽出一张卡片,并与实际的纸牌游戏的值进行比较。

我该如何去制作实际的数组,以便它能够与我的枚举函数一起工作,并且使用数组列表会更好吗?

+1

我会用一个数组列表,因为你可以跟踪所有52卡不重复。你也可以随机排序他们等等等等等等。我之前做过同样的任务。 – progrenhard

面向对象的解决方案如何?

什么是卡?卡片是拥有(即实例字段)Rank和Suit的对象。你现在有排名和适合作为你的Deck课程的属性,但我不会那样做。甲板是PlayingCards的集合,我会这样定义:

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

然后,你可以初始化游戏牌对象的数组。

你可以洗牌甲板(包含PlayingCards数组)用自定义的方法,你会写这样的:

myDeck.shuffle();