首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >image Array Processing 3.0中没有双重选择

image Array Processing 3.0中没有双重选择
EN

Stack Overflow用户
提问于 2016-11-03 16:18:13
回答 1查看 17关注 0票数 0

我一直在尝试编写一个随机抽取(例如)3张牌的程序。

但是我不希望我的程序两次获取同一张卡,所以这意味着它不能有重复的东西,但是我不知道如何使用image Array来做到这一点。

代码语言:javascript
复制
String[] card = { 
"Aclubs.png", 
"2clubs.png", 
"3clubs.png",
};
PImage[] cards = new PImage [card.length];

void setup() {
  size(1000,1000);
  randomCards();
  drawCards();
}

int randomCards() {

int i = (round(random(0,2)));
  cards[i] = loadImage(card[i]);
  return i;
}
void drawCards() {

  for (int g = 0; g < 12000; g = g+round((displayWidth * 0.9))/12) {
image(cards[randomCards()], 25+g, 50);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2016-11-03 20:52:58

不使用数组,而使用ArrayList。然后取下你使用的卡片。下面是一个小示例:

代码语言:javascript
复制
ArrayList<String> things = new ArrayList<String>();
things.add("cat");
things.add("dog");
things.add("lizard");

while (!things.isEmpty()) {
  int index = int(random(things.size()));
  String thing = things.remove(index);
  println(thing);
}

当然,这并不是唯一的方法。您可以使用Java Set,也可以使用保存您已经选择的内容的数据结构,或者可以将所有选项存储在一个数据结构中,然后对其进行混洗,然后从递增的索引中进行选择。或者,您可以使用the reference中的一个数组函数来执行此操作。

很难回答一般的“我该怎么做”类型的问题。堆栈溢出是为更具体的“我尝试了X,预期是Y,但得到了Z”类型的问题而设计的。所以你真的应该养成先试一试的习惯。问问自己在现实生活中如何做到这一点,然后看看the reference,看看是否有任何类或函数可以帮助你做到这一点。把你的问题分解成更小的部分。用英语写下你将如何在现实生活中做到这一点。假装你正在把这些指令交给一个朋友。他们能按照你的指示来完成目标吗?当你写出这些指令后,你就可以开始考虑在代码中实现这个算法了。盯着你已经写好的代码不会让你走得太远。然后,当你遇到困难时,你可以问一个更具体的问题,这会更容易帮助你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40396668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档