아래 5마용 카드 셔플 프로그램입니다.
이거 실행하면 아래와 같이 나오는데,
--------------------------------------------
Diamond 2, Diamond 3, Diamond 7, Spade 5, Diamond 10,
Spade 7, Clover 7, Spade Ace, Clover 8, Diamond 8
Diamond 4, Spade K, Spade 2, Clover 4, Spade 3,
Clover 9, Diamond 6, Spade Q, Spade 4, Heart 4
Diamond K, Spade 6, Clover J, Spade 8, Clover 6,
Spade 9, Diamond 5, Spade 10, Spade J, Clover 5
Heart 8, Diamond Ace, Clover Q, Diamond 9, Diamond J,
Clover 2, Diamond Q, Heart K, Heart 9, Heart 2
Heart Ace, Heart Q, Joker, Heart 3, Heart 5,
Clover 3, Heart 6, Heart 7, Heart 10, Heart J
Clover K, Clover Ace, Clover 10
--------------------------------------------
위의 각 10장씩을 1-5번 선수에게 주고,
제일 밑의 3장은 주공에게 나중에 주면 되지요.
C 프로그램은 아래에..
/* card shuffling for 5-man Mighty */
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define USED 0
#define UnUSED 1
#define NumCard 53
static int CARD[NumCard+1];
main(argc,argv)
int argc;
char *argv[];
{ int i,j;
init_rand(); init_card();
printf("--------------------------------------------\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{ sel_card(); printf(", "); }
printf("\n");
for(j=0;j<4;j++)
{ sel_card(); printf(", "); }
sel_card(); printf("\n\n");
}
sel_card();printf(", ");
sel_card();printf(", ");
sel_card();printf("\n");
printf("--------------------------------------------\n\n");
}
init_card()
{ int i;
for(i=0;i<NumCard;i++) CARD[i]=UnUSED;
}
init_rand()
{ int seed;
seed = (int)getpid(); srand(seed);
}
sel_card()
{ int i,cnt;
i=rand()%NumCard; cnt=0;
while(CARD[i]==USED)
{ i++; i%= NumCard; cnt++;
if (cnt>NumCard*2) exit(printf("No UnUsed Card\007\n"));
}
CARD[i]=USED; print_card(i);
}
print_card(id)
int id;
{ int suit, num;
suit = (id/13); num = id % 13;
if (id>=52) return(printf("Joker"));
if (suit==0) printf("Spade ");
else if (suit==1) printf("Diamond ");
else if (suit==2) printf("Heart ");
else if (suit==3) printf("Clover ");
if (num == 1 ) printf("Ace");
else if (num == 11) printf("J");
else if (num == 12) printf("Q");
else if (num == 0 ) printf("K");
else printf("%d",num);
}