Перетасовка колоды карт в C - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь перетасовать колоду карт после инициализации набора.

Массив инициализируется правильно, однако, когда я перехожу к отладчику в методе shuffle, некоторые карты даже не инициализируются.

Я также заметил, что 3 случайные карты всегда не инициализируются после вызова Shuffle.


Функции обмена / перемешивания:

void SwapCards(Card * cardOne, Card * cardTwo) //sending in address of two cards you want to swap
{
    Card temp = *cardOne;

    *cardOne = *cardTwo;
    *cardTwo = temp;

}

//create a new array to be filled with randomized cards
void Shuffle(Card Deck[], int iSize)
{
    int i;
    srand(time(NULL));

    for (i = 0; i < iSize; i++)
    {
        int randCard = rand() % 52;

        SwapCards(Deck + i, Deck + randCard);

        printf("The random number is %d\n", randCard);

    }
}

Основной:

int main(int argc, char** argv)
{
    const int SuitSize = 14;
    const int iSize = 52;
    int i;
    Face j;
    Suits k;
    Card Deck[52];

    printf("\nUnshuffled Deck...\n");

    //outer for loop is for suits = 4 x 13 = 52
    for (k = Clubs; k <= Spades; k++)
    {
        //inner for loop is for face
        for (j = Deuce; j <= Ace; j++)
        {
            Deck[j - Deuce + k * SuitSize].suit = k; //j-Deuce is 2 - face pos plus k * 13 k
            Deck[j - Deuce + k * SuitSize].value = j;

            ShowFace(j);
            printf(" of ");
            ShowSuit(k);
        }
    }

    printf("\nShuffled Deck...\n");
    Shuffle(Deck, iSize);

    //outer loop for suits
    for (k = Clubs; k <= Spades; k++)
    {
        //inner loop is for face
        for (j = Deuce; j <= Ace; j++)
        {
            ShowFace(Deck[j - Deuce + k * SuitSize].value);
            printf(" of ");
            ShowSuit(Deck[j - Deuce + k * SuitSize].suit);
        }
    }

    getchar();

}

Объявления enum / struct:

typedef enum { Clubs , Diamonds, Hearts, Spades } Suits;
typedef enum { Deuce = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace } Face;

typedef struct {
    Suits suit;
    Face value;
} Card;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...