我正在制作一个“战争游戏”,其中我有一个数组(不是ArrayList),我想在它被绘制后丢弃一张卡以避免再次绘制它。我知道我的一些朋友建议我使用ArrayList,但我的游戏已经完成,并且仍然存在这个最后一个小问题。
我的代码也是法语(实际代码除外,只有法语变量,注释等等。)因此很难理解我的意思。
有什么建议吗?如果需要,可以提供代码
答案 0 :(得分:1)
如果您仍想决定使用数组,请执行以下步骤。
将数组转换为数组列表。
ArrayList arrayList = new ArrayList<>(Arrays.asList(YOURARRAY));
arrayList.remove(EITHER OBJECT OR INDEX)
将数组列表转换为数组。
WHATEVER [] array = list.toArray(new WHATEVER [arrayList.size()]);
答案 1 :(得分:1)
对阵列进行随机抽取会创建一个牌组,选择一张牌只会增加int index
。由于你在一个数组中迭代唯一值,这就像丢弃一张卡片一样简单,每张卡片都在选择currentIndex之前。
int currentIndex;
public Deck(){
currentIndex = 0;
initDeck(); //generate cards
shuffleDeck(); //randomly shuffle the array
}
public Card pick(){
return deck[currentIndex++];
}
当然,这需要得到保护,此处仍然可以使用超出范围的例外,但这很容易管理。
答案 2 :(得分:0)
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
final String[] suits2 = new String[3];
System.arraycopy(suits, 0, suits2, 0, suits2.length);
for (int i = 0, j = 0; i < suits.length; i++){
if (suits[i].equals("Spades")){
suits[j] = suits2[i];
j++;
}
}
您也可以测试其他卡,但效率非常低。请改用ArrayList
。