所以我有一个甲板的代码,但我不知道如何使另一个类来处理每张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){....}
}