我一直在尝试编写一个随机抽取(例如)3张牌的程序。
但是我不希望我的程序两次获取同一张卡,所以这意味着它不能有重复的东西,但是我不知道如何使用image Array来做到这一点。
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);
}
}发布于 2016-11-03 20:52:58
不使用数组,而使用ArrayList。然后取下你使用的卡片。下面是一个小示例:
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,看看是否有任何类或函数可以帮助你做到这一点。把你的问题分解成更小的部分。用英语写下你将如何在现实生活中做到这一点。假装你正在把这些指令交给一个朋友。他们能按照你的指示来完成目标吗?当你写出这些指令后,你就可以开始考虑在代码中实现这个算法了。盯着你已经写好的代码不会让你走得太远。然后,当你遇到困难时,你可以问一个更具体的问题,这会更容易帮助你。
https://stackoverflow.com/questions/40396668
复制相似问题