我正在尝试创建一个卡牌游戏,它将从牌组中取出2张牌并同时翻转它们以显示它只有几秒钟的卡片然后将它们翻转过来但我很难获得卡牌p知道他们有前后。现在我有一个牌组和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);
}
}
}
答案 0 :(得分:0)
在现实世界中思考这个问题。哪个对象有两面图像?Card
。因此,您的目标对象是Card
而不是Deck
。
现在,如何设计可以拥有图像的类Card
?只需添加对图像的引用,它应该保持为:
public class Card { //extends/implements etc
private Image frontImage; //Image with number etc.
private Image backImage; //Image shown when the card is faced down.
//--and so on..
现在,在您的翻转动画中,您需要使用任意一侧的图像来绘制卡片,具体取决于向用户显示的一侧。另外,一个快速说明。鉴于大多数卡片组中的背面图像相同,请使用静态最终图像来保存全局backImage并在所有卡片上重复使用。