因此,我被赋予了修改先前代码(模拟一副纸牌)的任务,以便通过在绘制后将数组中的纸牌移除来更准确地执行此操作。
我知道有一些方法可以使用链表来做到这一点,但我对使用链表还是很陌生,并且希望得到帮助,因为我处于严格的时间表上,更不用说按照我被教导的方式去做了完全改变我使用数组的代码、结构和指针,这将花费我没有的时间。
void draw(int deck[SIZE])
{
int numCards = 10;
int i;
int hand[numCards];
int card;
for(i = 0; i < numCards; i++)
{
card = deck[i];
hand[i] = card;
cards(card);
}
}
这是我需要修改的当前功能,以便当将卡片添加到手 [i] 时,卡片会从卡片组 [i] 中移除,因此我不会重复。
卡片是打印卡片的功能,可以忽略
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 52
enum faces{Ace = 0, Jack = 10, Queen, King};
char * facecheck(int d);
void shuffle( int deck[]);
void draw(int deck[SIZE]);
void cards(int hand);
int i;
int main()
{
int deck[SIZE], i, n;
char suits[4][9] =
{
"Hearts",
"Diamonds",
"Clubs",
"Spades"
};
srand( time( NULL ) ) ;
for(i = 0; i<SIZE; i++)
{
deck[i] = i;
};
shuffle(deck);
draw(deck);
shuffle(deck);
draw(deck);
return 0;
}
这是当前的主要功能, shuffle 会按照您的想法进行,而 draw 是我需要修改的功能,因为即使它随机循环卡牌,如果运行足够多的话,两张卡也会出现在同一手牌中。