Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用LibGDX的数组列表变量_Java_Arrays_Libgdx - Fatal编程技术网

Java 使用LibGDX的数组列表变量

Java 使用LibGDX的数组列表变量,java,arrays,libgdx,Java,Arrays,Libgdx,我正在用LibGDX做一个游戏,我被数组列表困住了。我的计划是有一副20张牌。阵列列表中的每个位置都有自己的卡,其中包含统计值 下面是我的卡片等级: 公共类卡{ 私有字符串名称; 私人武装力量; 私人攻击; 私人内部防御; 私人成本; 公共卡(字符串名称、整数力量、整数攻击、整数防御、整数成本){ this.name=名称; 这个攻击=攻击; 成本=成本; 这个。防御=防御; 这个力=力; } 警队(){ 归还这个。武力; } 公共整数攻击(){ 回击这个攻击; } 公共in

我正在用LibGDX做一个游戏,我被数组列表困住了。我的计划是有一副20张牌。阵列列表中的每个位置都有自己的卡,其中包含统计值

下面是我的卡片等级:

公共类卡{
私有字符串名称;
私人武装力量;
私人攻击;
私人内部防御;
私人成本;
公共卡(字符串名称、整数力量、整数攻击、整数防御、整数成本){
this.name=名称;
这个攻击=攻击;
成本=成本;
这个。防御=防御;
这个力=力;
}    
警队(){
归还这个。武力;
}   
公共整数攻击(){
回击这个攻击;
}  
公共int防御(){
把这个还给我。辩护;
}   
公共成本(){
退还此费用;
}    
公共字符串名称(){
返回此.name;
}  

}
您是否尝试过这样制作字符串数组

int ammountOfMethods = 7; //Arbitrary number, but whatever you'd need
String[]  stringArray = new String[ammountOfMethods];
stringArray[0] = "force";
//Etc...

如果您可以使用Java8,我建议使用streams API。 e、 g

public void createDeck(数组卡,字符串名){
这个。卡片=卡片;
this.name=名称;
this.force=cards.stream()//流是一种功能性的、美化的forEach,具有良好的API
.mapToInt(卡::力)//将流更改为int(卡的力值)
.sum();//获取总数。
. . .
}
有关更多信息,请参阅和


如果你需要额外的指导,请留下评论,我会详细说明。

为什么牌组的属性值(名称、力量、攻击、防御、成本)与牌组相同?因为看起来牌组应该只持有这些牌,然后每张牌都会有自己的统计数据集,并且每张牌的统计数据会有所不同

关于创建卡片并给出它们的初始值,您必须以某种方式指定每张卡片的统计信息。您可以硬编码这些值,或者如果您希望每次玩时卡的统计数据不同,您可以使用随机数生成来选择具有指定范围的值。然后,您需要根据这些值实例化(创建)卡片,并将它们添加到您的卡片组中

createDeck()方法是您希望创建牌组、创建牌并将它们添加到牌组的地方

下面是一个硬编码卡“骑士”、“巨魔”和“向导”的统计值并将其添加到卡组的示例:

public void createDeck(){
   cards = new Array<Card>(Card.class);

   cards.add(new Card("Knight", 50, 25, 35, 200));
   cards.add(new Card("Troll", 25, 27, 29, 350));
   cards.add(new Card("Wizard", 78, 96, 60, 500));
   ...
}
public void createDeck(){
卡片=新阵列(Card.class);
卡片。添加(新卡片(“骑士”,50、25、35、200));
添加(新卡(“巨魔”,25、27、29、350));
添加(新卡(“向导”,78、96、60、500);
...
}

这样做20次,它将用20张独特的卡填满你的牌组。

你不能像这样初始化
数组的大小:

public Deck(){
    cards.size = 20;
}
private Array<Card> cards;

...

public void createDeck(){

   cards = new ArrayList<Card>();

   cards.add(new Card("Name1", 1, 2, 3, 4));
   cards.add(new Card("Name2", 5, 6, 7, 8));
   cards.add(new Card("Name3", 9, 10, 11, 12));

}
Array
是一个接口,因此需要
ArrayList
的实例。
ArrayList
是一个动态数组对象,因此不需要提供数组的大小

您只需将元素添加到数组中即可

也可以使用基元数组,但应小心,因为这种类型的数组无法动态更改其大小

第一个选项可以如下所示:

public Deck(){
    cards.size = 20;
}
private Array<Card> cards;

...

public void createDeck(){

   cards = new ArrayList<Card>();

   cards.add(new Card("Name1", 1, 2, 3, 4));
   cards.add(new Card("Name2", 5, 6, 7, 8));
   cards.add(new Card("Name3", 9, 10, 11, 12));

}