所以我有一个套牌的代码,但我不知道如何让另一个班级分别处理4手10张牌。另一类应该在屏幕上打印,在文本中,4手10张随机卡片。有人能告诉我如何完成这个的代码吗?我正在使用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]);
}
}
}
答案 0 :(得分:2)
根据游戏的精神,让我们创建一个可以工作的层次结构。最大的范围将是游戏,它将动作委托给其他类。我们还将有3个班级:Deck,Dealer,Player。
游戏将拥有经销商和播放器的ArrayList 经销商将有一个甲板 播放器将有一个StringList,表示您的卡
然后游戏可以告诉经销商创建并随机播放一副牌组。你可以调用一张交易卡,将玩家作为一个参数传递给经销商,经销商可以根据玩家的数量,给他们甲板上的下一个元素,并从牌组中删除该元素。
一旦你处理了所有牌,游戏就可以告诉玩家展示他们的牌,打印结果。
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){....}
}
答案 1 :(得分:0)
您的卡片/甲板课程应分为两类。
卡片类会描述一张卡片。
public class Card {
private String rank;
private String suit;
public Card(String rank, String suit) {
this.rank = rank;
this.suit = suit;
}
public String getRank() {
return rank;
}
public String getSuit() {
return suit;
}
@Override
public String toString() {
return rank + " of " + suit;
}
}
甲板课程描述了一副牌。
public class Deck {
private String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9",
"10", "Jack", "Queen", "King", "Ace" };
private String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
private Card[] cards;
public Deck() {
cards = new Card[suit.length * rank.length];
for (int i = 0; i < rank.length; i++) {
for (int j = 0; j < suit.length; j++) {
cards[suit.length * i + j] = new Card(rank[i], suit[j]);
}
}
}
public Card[] shuffleDeck() {
for (int i = 0; i < cards.length; i++) {
int r = (int) (Math.random() * (cards.length - 1));
Card t = cards[r];
cards[r] = cards[i];
cards[i] = t;
}
return cards;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < cards.length; i++) {
builder.append(cards[i].toString());
builder.append(System.getProperty("line.separator"));
}
return builder.toString();
}
}
在你理解这两个类如何协同工作之前,没有必要介绍其他类。
Java或任何面向对象的计算机语言的观点是将你的问题分解成更小的类,每个类都做一件事并做得很好。