游戏算法-洗扑克牌

来源:互联网 发布:上海811所硕士待遇知乎 编辑:程序博客网 时间:2024/06/11 22:04

游戏算法-洗扑克牌


扑克牌洗牌算法中关键点:随机值的算法及扑克牌的设计。


#include <stdio.h>#include <stdlib.h>#include <time.h>#define CARD_NUM 52typedef struct _card_tag{    char  m_card_num;    char  m_suit; // 3:heart  4:club  5:diomand  6:spade} card_t;card_t arrCards[CARD_NUM];void PrintCard(card_t arrCard[]){    int i = 0;    for (i = 0; i < CARD_NUM; i++)    {        if ((i != 0) && (i % 13 == 0))        {            printf("\n\n");        }        printf("%d%c ", arrCard[i].m_suit, arrCard[i].m_card_num);    }    printf("\n\n");}void Shuffle(card_t arrCard[]){    int  i = 0;    int  nTmp = 0;    char nSuit = 3;    char chCard = 0;     for (i = 0; i < CARD_NUM; i++)    {        if ((i != 0) && (i % 13 == 0))        {            nSuit++;        }        nTmp = i % 13;        switch(nTmp)        {        case 0:            arrCard[i].m_card_num = 'A';            break;        case 9:            arrCard[i].m_card_num = '0';            break;        case 10:            arrCard[i].m_card_num = 'J';            break;        case 11:            arrCard[i].m_card_num = 'Q';            break;        case 12:            arrCard[i].m_card_num = 'K';            break;        default:            arrCard[i].m_card_num = '1' + nTmp;            break;        }        arrCard[i].m_suit = nSuit;    }    PrintCard(arrCard);    srand(time(NULL));    for (i = 0; i < CARD_NUM; i++)    {        nTmp = rand() % 52;        chCard  = arrCard[nTmp].m_card_num;        nSuit   = arrCard[nTmp].m_suit;        arrCard[nTmp].m_card_num = arrCard[i].m_card_num;        arrCard[nTmp].m_suit     = arrCard[i].m_suit;        arrCard[i].m_card_num    = chCard;        arrCard[i].m_suit        = nSuit;    }    PrintCard(arrCard);}int main(){    int n = 0;    Shuffle(arrCards);    scanf("%d", n);    return 0;}




原创粉丝点击