到目前为止,这就是我所拥有的
import java.util.Random;
public class DeckOfCards
{
public static final int DECK_SIZE = 52;
//Instance Variables
private boolean[] deck; //An implicit set of 52 Playing-Cards
private int cardsInDeck;//Number of cards currently in the deck
private Random dealer; //Used to rendomly select a card to be dealt
//Constructor
public DeckOfCards()
{
deck = new boolean[52];
for (int j = 0; j<deck.length ; j ++)
deck [j] = false;
我正朝着正确的方向前进吗?......在此之后我该怎么办?我对布尔数组不是很熟悉
答案 0 :(得分:3)
我自己,我会为我的牌组变量使用一系列Card对象,而不是一系列布尔值。原始布尔变量只能处于两种状态之一,true或false,而Card必须同时具有套装(4种状态中的1种)和1种状态(13种状态中的1种)。
答案 1 :(得分:1)
考虑到分配,您应该在true
数组中存储false
而不是deck
。而且,我会把它变成一个二维的布尔数组 - 一个套件的维度,以及一个维度。
private boolean deck[][] = new boolean[13][4];
public DeckOfCards() {
for (int rank = 0 ; rank != 13 ; rank++)
for (int suite = 0 ; suite != 4 ; suite++)
deck[rank][suite] = true;
}
boolean containsCard(int rank, int suite) {
return deck[rank][suite];
}
答案 2 :(得分:1)
根据您的评论,您必须使用布尔数组,其中true
表示卡片在那里。
第一点:
所以当你构建甲板时它是填充还是空的?
我认为它会满,那么每个单元格的值应该是多少?
第二点:
在您使用的构造函数中:
deck = new boolean[52];
哪个完全有效但你也有
public static final int DECK_SIZE = 52;
宣布,我认为你应该在适用的情况下使用DECK_SIZE
。
第三点:
您有两个字段:
private int cardsInDeck;//Number of cards currently in the deck
private Random dealer; //Used to rendomly select a card to be dealt
未在构造函数中初始化(至少不在您发布的部分中)
最后一点:
除了设置本地字段外,构造函数方法不应该执行任何操作。因此,如果您修复了deck
初始化并初始化其他字段,那么您应该对构造函数有所帮助。在这种情况下,大多数工作将在绘制卡片的功能中完成。
编辑:
要画一张卡,你必须
drawACard()
,可以打印出来或返回绘制的卡片dealer
)(保存索引)true
/ false
应该有帮助)deck
中正确设置位置来更新该卡位置"Ace of Clubs"
之类的相应字符串,你可以用因此,您实施的主要部分将是如何将您index=5
的内容更改为String
"Six of Clubs"
。