(处理)删除数组中以前使用的对象

时间:2014-11-24 03:10:47

标签: arrays arraylist processing

对不起标题的可怕措辞。我正在制作一场战争"战争"在我的编程类的处理中。我需要更改我的代码,以便从卡组/阵列中删除使用的每张卡。我偶然发现了一些帖子,谷歌的结果提到了#34; ArrayList",但我仍然毫无头绪。

以下代码显示两张单独的随机卡,并在单击鼠标时显示两张新随机卡。

(第一篇标签'战争')

void draw(){
image(card[imageIndex],40,150);
image(card2[imageIndex2],340,150);
}

void mousePressed(){
imageIndex = int(random(card.length));
imageIndex2 = int(random(card2.length));
}

(第二个标签'卡')

PImage[] card = new PImage[13];
PImage[] card2 = new PImage[13];
int imageIndex = int(random(0,12)),
imageIndex2 = int(random(0,12));

void setup(){
size(500,500);
card[0] = loadImage("2_of_clubs.jpg");
card[1] = loadImage("3_of_clubs.jpg");
card[2] = loadImage("4_of_clubs.jpg");
card[3] = loadImage("5_of_clubs.jpg");
card[4] = loadImage("6_of_clubs.jpg");
card[5] = loadImage("7_of_clubs.jpg");
card[6] = loadImage("8_of_clubs.jpg");
card[7] = loadImage("9_of_clubs.jpg");
card[8] = loadImage("10_of_clubs.jpg");
card[9] = loadImage("jack_of_clubs.jpg");
card[10] = loadImage("queen_of_clubs.jpg");
card[11] = loadImage("king_of_clubs.jpg");
card[12] = loadImage("ace_of_clubs.jpg");

card2[0] = loadImage("2_of_clubs.jpg");
card2[1] = loadImage("3_of_clubs.jpg");
card2[2] = loadImage("4_of_clubs.jpg");
card2[3] = loadImage("5_of_clubs.jpg");
card2[4] = loadImage("6_of_clubs.jpg");
card2[5] = loadImage("7_of_clubs.jpg");
card2[6] = loadImage("8_of_clubs.jpg");
card2[7] = loadImage("9_of_clubs.jpg");
card2[8] = loadImage("10_of_clubs.jpg");
card2[9] = loadImage("jack_of_clubs.jpg");
card2[10] = loadImage("queen_of_clubs.jpg");
card2[11] = loadImage("king_of_clubs.jpg");
card2[12] = loadImage("ace_of_clubs.jpg");
}

2 个答案:

答案 0 :(得分:0)

使用ArrayList看起来或多或少像:

// gonna use strings instead of images
// just to show the idea. I don't have all this images...
ArrayList<String> card = new ArrayList<String>();
ArrayList<String> card2;

int imageIndex, imageIndex2;

String display1, display2;

void setup() {
  size(500, 500);
  card.add("2_of_clubs.jpg");
  card.add("3_of_clubs.jpg");
  card.add("4_of_clubs.jpg");
  card.add("5_of_clubs.jpg");
  card.add("6_of_clubs.jpg");
  card.add("7_of_clubs.jpg");
  card.add("8_of_clubs.jpg");
  card.add("9_of_clubs.jpg");
  card.add("10_of_clubs.jpg");
  card.add("jack_of_clubs.jpg");
  card.add("queen_of_clubs.jpg");
  card.add("king_of_clubs.jpg");
  card.add("ace_of_clubs.jpg");

  card2 = new ArrayList<String>(card);


  imageIndex = int(random(card.size()));
  imageIndex2 = int(random(card2.size()));

  display1 = card.get(imageIndex);
  display2 = card2.get(imageIndex2);

  card.remove(imageIndex);
  card2.remove(imageIndex2);

  println("\ncard draw from card : "+ display1);
  println("card draw from card2: "+ display2 + "\n");
}

void draw() {
}

void mousePressed() {
  if (card.size() > 0) {
    imageIndex = int(random(card.size()));
    imageIndex2 = int(random(card2.size()));

    display1 = card.get(imageIndex);
    display2 = card2.get(imageIndex2);

    card.remove(imageIndex);
    card2.remove(imageIndex2);

    println("\ncard draw from card : "+ display1);
    println("card draw from card2: "+ display2 + "\n");
  } else {
    println("The deck is empty...");
  }
}

答案 1 :(得分:0)

如果你必须使用数组,那么你必须做类似于以下代码的事情:

PImage[] removeCardFromDeck(PImage deck, int index){
  PImage[] newdeck = new PImage[deck.length -1];
  int count=0;
  for(int i =0 ; i<newdeck.length;i++){
    if(count==index) count++;
    newdeck[i] = deck[count];
    count++;    
  }
  return newdeck;
}

但是对于此任务,最好使用ArrayLists。