그래서 이전 코드 (카드 데크를 시뮬레이트 함)를 수정하여 더 많은 작업을 수행했습니다. 배열에있는 카드를 가져온 후 제거해야합니다.배열의 이전 요소를 제거하도록이 함수를 수정할 수있는 방법이 있습니까? C
링크 된 목록을 사용하여이 작업을 수행 할 수있는 방법이 있지만 링크 된 목록을 사용하는 방법에 익숙하지 않으며 엄격한 타임 라인에 있기 때문에 도움이되고 싶습니다. 배열을 사용하는 코드를 완전히 변경해야합니다. 구조체와 포인터는 필요하지 않습니다.
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);
}
}
이 내가 카드를 손에 추가 될 때 [내가] 카드가 덱에서 제거되도록 수정해야 현재 fucuntion은 [내가] 그래서 난 반복하지 않습니다.
카드는 심지어 불구하고, 당신이 생각하는 그립니다 내가 있기 때문에 수정해야하는 기능입니다 것처럼 셔플 않습니다, 카드를 인쇄하고이 현재의 주요 기능입니다
#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;
}
무시 될 수있는 기능입니다 카드를 무작위로 순환 시키면, 같은 카드에 두 장의 카드가 동시에 나타날 수 있습니다.
특수 카드를 추가 하시겠습니까? –
특수 카드 (-1)를 사용하여 카드가 있는지 또는 삭제되었는지 확인할 수 있습니다. deck [i]의 값은 삭제되지 않는 한 -1이 아닙니다. – user1952500