Как извлечь карту из колоды, не повторяя в C? - PullRequest
0 голосов
/ 24 октября 2019

Я перемешал массив, но теперь мне нужна функция для извлечения карты из массива в порядке перемешанной колоды. Я не могу понять, как нарисовать следующую карту в колоде. Как я буду переходить к следующей карте каждый раз, когда беру карту? Буду ли я использовать какой-то счетчик?

#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);
}**/

1 Ответ

0 голосов
/ 28 октября 2019
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 () вместо использования глобалов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...