/* 纸牌模拟程序 */
#include
#include
#include
#include
struct card
{ char suit[2];
char face[3];
};
typedef struct card CARD;
void initcard(CARD deck[],char s[][2],char f[][3]);
void shuffle(CARD deck[]);
void print(CARD deck[]);
int main()
{ CARD deck[52];
char s[4][2]={"\003","\004","\005","\006"};
char f[13][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
initcard(deck,s,f);
srand(time(NULL));
shuffle(deck);
print(deck);
system("pause");
return 0;
}
void initcard(CARD deck[],char s[][2],char f[][3])
{ int i;
for(i=0;i<52;i++)
{ strcpy(deck[i].suit,s[i/13]);
strcpy(deck[i].face,f[i%13]);
}
}
void shuffle(CARD deck[])
{ int i,j;
CARD temp;
for(i=0;i<52;i++)
{ j=rand()%52;
if(j!=i)
{ temp=deck[i];
deck[i]=deck[j];
deck[j]=temp;
}
}
}
void print(CARD deck[])
{ int i;
for(i=0;i<52;i++)
{ printf("%2s--%2s",deck[i].suit,deck[i].face);
printf("%c",(i+1)%4? '\t' : '\n');
}
}
用C语言设计的话就是用纸牌模拟,
#include
#include
#include
#include
struct card
{ char suit[2];
char face[3];
};
typedef struct card CARD;
void initcard(CARD deck[],char s[][2],char f[][3]);
void shuffle(CARD deck[]);
void print(CARD deck[]);
int main()
{ CARD deck[52];
char s[4][2]={"\003","\004","\005","\006"};
char f[13][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};(根据规则变化可自行修改)
initcard(deck,s,f);(以下为固定)
srand(time(NULL));
shuffle(deck);
print(deck);
system("pause");
return 0;
}
void initcard(CARD deck[],char s[][2],char f[][3])
{ int i;
for(i=0;i<52;i++)
{ strcpy(deck[i].suit,s[i/13]);
strcpy(deck[i].face,f[i%13]);
}
void shuffle(CARD deck[])
{ int i,j;
CARD temp;
for(i=0;i<52;i++)
{ j=rand()%52;
if(j!=i)
{ temp=deck[i];
deck[i]=deck[j];
deck[j]=temp;
}
void print(CARD deck[])
{ int i;
for(i=0;i<52;i++)
{ printf("%2s--%2s",deck[i].suit,deck[i].face);
printf("%c",(i+1)%4? '\t' : '\n');
}我自己试了下,完全可用,不能做的太大,防止字符超出,缓冲区溢出
不会