我正在尝试制作纸牌游戏,我的计划是制作一个首先包含1-10的数组,然后是JA,然后是颜色,所以三个不同的数组和不同的变量包含整数和字符。
然而,我现在已经遇到了问题,因为我想要从数组中删除重复项,但我真的不知道该怎么做,我已经阅读了一些事实,但我需要一个更好的解释,并且它会看起来代码,明智的。
这是我的代码到目前为止的样子:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int arrays[10] = { 1,2,3,4,5,6,7,8,9,10 };
char* color[4] = { "Diamond", "Spade", "Heart", "Clubs" };
int i;
int *number;
srand(time(NULL));
for (i = 0; i < 10; i++) {
number = arrays[rand() % 10];
if (number ) { //Its here where i want to remove the duplicates
continue;
}
else {
printf("%d ", number);
}
}
system("pause");
return 0;
}
我非常感谢有关如何操作的解释,我尝试使用包含数组[i]值的变量,但随后将删除所有数字。
答案 0 :(得分:1)
我认为最好创建所有卡片的一个数组(如deck)然后shuffle数组,而不是使用随机选择.. 然后你就可以拿出前10张卡而不需要重复。
理论上,随机选择,您可以选择已经&#34;绘制&#34;的每张时间卡,这将浪费时间(你抽出的牌越多,你击中未抽牌的机会就越少)。 / p>
答案 1 :(得分:0)
我认为你的意思是在循环中,如果你有&#34;画出&#34;一个号码,你不想再画一个相同的号码?然后你可以有另一个带有标志的数组,说明索引是否已被&#34;绘制&#34;之前,如果有,那么再次画画。