typedef结合结构做的洗牌发牌

本文介绍了一种高效的洗牌及发牌算法实现,通过C语言结构体定义卡牌,并利用数组填充、随机洗牌和输出展示等功能完成游戏中的发牌过程。该算法适用于需要随机分配卡牌的游戏开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//高性能洗牌发牌游戏算法。利用结构类型
#include
#include
#include
struct card
{
    const char *face;
    const char *suit;
};
typedef struct card Card;//终于明白他的意思了,原来如果你不这样写的话,后面的必须用struct card这样多麻烦阿。所以这么声明就可以用Card直接代替了!!!
void fillDeck( Card * const wDeck,const char * wFace[],const char * wSuit[] );
void shuffle( Card * const wDeck );
void deal( const Card * const wDeck);
int main()
{
    Card deck[52];
    const char *face[]={"Ace","Deuce","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
    const char *suit[]={"Hearts","Diamonds","Clubs","Spades"};
    srand( time( NULL) );
    fillDeck( deck, face, suit );
    shuffle( deck );
    deal( deck );
    return 0;
}
void fillDeck( Card * const wDeck,const char * wFace[],const char * wSuit[] )
{
    int i;
    for( i = 0; i<52; i++)
    {
        wDeck[ i ].face = wFace[ i % 13 ];
        wDeck[ i ].suit = wSuit[ i / 13 ];
    }
}
void shuffle( Card * const wDeck )
{
    int i,j;
    Card temp;
    for( i = 0; i <52; i++)
    {
        j = rand() % 52;
        temp = wDeck[i];
        wDeck[i] = wDeck[j];
        wDeck[j] = temp;
    }
}
void deal( const Card * const wDeck)
{
    int i;
    for(i = 0; i<52; i++)
    {    printf("%5s of %-8s%c",wDeck[i].face,wDeck[i].suit,(i+1) % 2 ? '/t' : '/n');}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值