我正在努力创造一场战争纸牌游戏。然而,对于这个游戏,将会有一个名为“特朗普”的额外卡片堆。如果任何一个玩家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
,我很确定这是因为我没有将任何东西传递到特朗普堆中。当我尝试为trump ArrayList输入一个int时,我会得到一个错误int cannot be converted to Card []
。
我怎样才能从52的牌组中获得前六张牌而不将它们作为参考存储起来,并将它们添加到王牌堆中?
此外,我是否正确宣布了player1,player2和cardpile?
我非常感谢您的帮助,谢谢。
答案 0 :(得分:4)
您应该替换为:
for (int i=0; i<6; i++)
{
tCard.add(cp.get(i));
}
你试图从空tCard
获取卡片。
请注意,此代码在您调用cp = new CardPile(array)
之前仍然无效,其中数组实际上包含非null
的卡片。否则,tCard.add(cp.get(0))
不会将引用添加到第一张卡片,只会添加null
答案 1 :(得分:0)
卡类:
public class Card {
Integer i = new Integer(0);
Card(Integer is) {
this.i = is;
}
}
CardPile课程:
public class CardPile {
ArrayList<Card> pile = null;
public CardPile(Integer no)
{
pile = new ArrayList<Card>();
for (int i=1; i<=no; i++) {
pile.add(new Card(i));
}
}
public void add(Card aCard)
{
pile.add(aCard);
}
public Card get(int index)
{
return pile.get(index);
}
}
TrumpWar类:
public class TrumpWar {
protected CardPile tCard;
protected CardPile cp;
protected CardPile p1;
protected CardPile p2;
public TrumpWar( )
{
cp = new CardPile (52); // only passing the no of cards to be created.
//cp.shuffle();
tCard = new CardPile(52); // only passing the no of cards to be created.
for (int i=1; i<7; i++)
{
tCard.add(tCard.get(i));
}
// cp.shuffle();
p1 = new CardPile(26);
p2 = new CardPile(26);
}
public static void main(String a[]){
new TrumpWar();
}
}