所以我有一个甲板的代码,但我不知道如何使另一个类来处理每张10张牌的4手。另一类应在屏幕上以文本方式打印10张随机卡片的4手。有人可以告诉我如何实现此目标的代码吗?我也使用blueJ。

下面是我的套牌代码:

public class Card
{
public static void main(String[] args)
{
    String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
    String[] rank =     { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };

    int SUITS = suit.length;
    int RANKS = rank.length;
    int N = SUITS * RANKS;

    // initialize deck
    String[] deck = new String[N];
    for (int i = 0; i < RANKS; i++) {
        for (int j = 0; j < SUITS; j++) {
            deck[SUITS*i + j] = rank[i] + " of " + suit[j];
        }
    }

    // shuffle the deck
    for (int i = 0; i < N; i++) {
        int r = i + (int) (Math.random() * (N-i));
        String t = deck[r];
        deck[r] = deck[i];
        deck[i] = t;
    }

    for (int i = 0; i < N; i++) {
        System.out.println(deck[i]);
    }
   }

}

最佳答案

本着游戏的精神,让我们创建一个处理可能起作用的层次结构。最大的范围是游戏,它将把动作委派给其他类。我们还将有3类:牌组,庄家,玩家。

一个游戏将有一个发牌人和一个玩家数组
经销商将有一个甲板
玩家将有一个字符串数组列表,指示您的牌

然后,游戏可以告诉发牌人创建并洗牌。您可以调用一个DealCards,将Players作为参数传递给发牌人,该发牌人可以根据玩家的数量,将其分配到Deck中的下一个元素,并将其从牌组中删除。

分发完所有纸牌后,游戏便可以告诉玩家举手并打印结果。

public Dealer{
    private Deck deck;

    ....

    public void shuffleDeck(){...}
    public void dealCards(List<Player> players){ ...}
}

public Player{
    private List<String> hand;

    ....

    public void addToHand(String card){....}
}

07-24 15:54