在绘制卡片后丢弃它

时间:2017-03-08 14:26:41

标签: java arrays

我正在制作一个“战争游戏”,其中我有一个数组(不是ArrayList),我想在它被绘制后丢弃一张卡以避免再次绘制它。我知道我的一些朋友建议我使用ArrayList,但我的游戏已经完成,并且仍然存在这个最后一个小问题。

我的代码也是法语(实际代码除外,只有法语变量,注释等等。)因此很难理解我的意思。

有什么建议吗?如果需要,可以提供代码

3 个答案:

答案 0 :(得分:1)

如果您仍想决定使用数组,请执行以下步骤。

  1. 将数组转换为数组列表。

    ArrayList arrayList = new ArrayList<>(Arrays.asList(YOURARRAY));

    arrayList.remove(EITHER OBJECT OR INDEX)

  2. 将数组列表转换为数组。

    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