我打乱了数组,但现在我需要一个函数来按照打乱的牌组的顺序从数组中抽一张牌。我似乎不知道如何在牌组中抽出下一张牌。每次抽一张牌,我该如何递增到下一张牌?我需要某种柜台吗?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 52
void initDeck();
void shuffle();
int draw(int d[]);
int deck[SIZE];
int sdeck[SIZE];
int main()
{
initDeck();
shuffle();
return 0;
}
void initDeck(){
int i = 0;
for(i; i < SIZE; i++){
deck[i] = i + 1;
}
}
void shuffle(){
srand(time(NULL));
int i = 0;
for(i; i < SIZE; i++){
sdeck[i] = deck[i];
}
i = 0;
for(i = SIZE; i > 0; i--){
int j = rand() % (i + 1);
int temp = sdeck[i];
sdeck[i] = sdeck[j];
sdeck[j] = temp;
}
for(i = 0; i < SIZE; i++){
printf("%d,", sdeck[i]);
}
}
/**int draw(int d[]){
int k=0;
k = d[k];
return(k);
}**/
int sdeck[SIZE];
int num_dealt = 0;
. . .
void shuffle() {
. . .
num_dealt = 0;
}
int draw() {
int c = sdeck[num_dealt];
num_dealt += 1;
return c;
}
下一步是使牌组成为一个包括牌和计数的结构,并将该结构传递给draw((,而不是使用全局变量。