0
我正在试图制作一款纸牌游戏,将从甲板上取2张牌并同时翻转它们以揭示哪张牌只有几秒钟,然后将它们翻转过来,但是即时消息在获得卡片时知道他们有正面和背面。现在我有一张牌和2张牌,但他们都是正确的,我需要甲板面朝下,2张牌也面朝下安装,然后翻转。但是,当我加载后面的图片,它只是使所有的卡片相同的图片。我知道我必须在甲板课上用某种标志设置它,但是不知道如何?如何制作双面图像
public class Deck
{
private Random random = new Random();
protected Card cards[] = new Card[52] ;
private ImageIcon back = new ImageIcon("card bitmaps/back.GIF");
protected boolean flip = false;
protected int numcards = 0;
public Deck()
{
int i = 0;
for (int s = 1; s<5 ; s++)
{
for (int n=1; n<14 ; n++)
{
cards[i] = new Card(n,s);
i++;
numcards = numcards + 1;
}
}
}
public void giveslapZone (Deck d)
{
numcards = numcards - 1;
d.takecardslapZone(cards[numcards]);
return;
}
public void takecardslapZone(Card c)
{
cards[numcards] = c;
numcards = numcards + 1;
}
public void shuffle()
{
for (int i = 0; i<numcards; i++)
{
int j = random.nextInt(numcards);
Card temp = cards[i];
cards[i] = cards[j];
cards[j] = temp;
}
}
public void draw (Container c ,Graphics g, int x , int y )
{
for (int i = 0; i<numcards; i++)
{
cards[i].draw(c, g, x,y) ;
if (flip==false)
back.paintIcon(c,g,x,y);
}
}
}
那么为什么有一个实际的实例字段首先指向后面的图像? – RealSkeptic
你必须用一张卡封装一张卡片的财产。通过将这些信息放在外部,它的开放性可以从任何地方改变 - 就像这个例子一样,这就是它为两张卡片绘制相同图像的原因。 –
我并不是说它应该在Card类之外,或者它应该是公开的。我说它不应该是*实例*字段。注意:我不是OP。 – RealSkeptic