我正在尝试制作纸牌战争。但是,对于此游戏,将有一个名为“王牌”的额外纸牌堆。如果玩家1或2拥有一张在王牌堆中引用的牌,则无论其排名如何,它都是自动获胜。此刻,我坚持逻辑。
在称为CardPile的类中,这里是构造函数和方法。
public CardPile(Card[ ] initialCards)
{
pile = new ArrayList<Card>();
for (int i=0; i<initialCards.length; i++)
pile.add(initialCards[i]);
}
public void add(Card aCard)
{
pile.add(aCard);
}
public Card get(int index)
{
return pile.get(index);
}
在我称为TrumpWar的课程中
protected CardPile tCard;
protected CardPile cp;
protected CardPile p1;
protected CardPile p2;
public TrumpWar( )
{
cp = new CardPile (new Card[52]);
cp.shuffle();
tCard = new CardPile ();
for (int i=1; i<7; i++) //<---Stuck.
{
tCard.add(tCard.get(i)); //<---error
}
cp.shuffle();
p1 = new CardPile(new Card [26]);
p2 = new CardPile(new Card [26]);
}
当我运行游戏时,我得到一个
NullPointerException
,我可以肯定这是因为我没有将任何东西传递给王牌堆。当我尝试为王牌ArrayList输入int时,会出现错误int cannot be converted to Card []
。我如何才能从52张牌中获得前六张牌,而又不将它们存储为参考并将其添加到王牌堆中而将其删除呢?
此外,我是否正确声明了player1,player2和cardpile?
非常感谢您的帮助,谢谢。
最佳答案
您应该替换为:
for (int i=0; i<6; i++)
{
tCard.add(cp.get(i));
}
您试图从空的
tCard
中获取卡片。请注意,直到您调用
cp = new CardPile(array)
(其中数组实际包含非null
的卡片)之前,此代码仍然无法使用。否则,tCard.add(cp.get(0))
不会将引用添加到第一张卡,而只是null