C语言:斗地主发牌程序

来源:互联网 发布:gopro 软件 编辑:程序博客网 时间:2024/05/18 02:53

题目来源仍然是小学期,就当娱乐

运行示例

贴代码:

#include<stdio.h>#include<stdlib.h>#include<time.h>//函数声明void sortCards(int *, int);void showCards(int *, int);void changeCard(int);int getOneCard();int Cards[55] = { 0 };//用于记录每张牌是否被用过( 丢弃cards[0]int main() //rand()%m+1,产生0- m-1的随机数{    int i, iCount = 0;    int Player_A[18] = { NULL };    int Player_B[18] = { NULL };    int Player_C[18] = { NULL };    int Ground[4] = { NULL };//Abandon all [0]    for (i = 1; i <= 3; i++)//获取底牌    {        Ground[i] = getOneCard();    }    sortCards(Ground, 4);//按牌大小排序    for (i = 1; i <= 17; i++)//为三个玩家分别发牌    {        Player_A[i] = getOneCard();        Player_B[i] = getOneCard();        Player_C[i] = getOneCard();    }    puts("Player's Cards");        sortCards(Player_A, 18);        sortCards(Player_B, 18);        sortCards(Player_C, 18);    puts("Player_A:");//打印A的牌        showCards(Player_A, 17);    puts("\n\nPlayer_B:");//打印B的牌        showCards(Player_B, 17);    puts("\n\nPlayer_C:");//打印C的牌        showCards(Player_C, 17);    puts("\n\nCards on the Ground:");        showCards(Ground, 3);//打印底牌    puts("");    system("pause");    return 0;}int getOneCard()//通过随机数取得一张没用过的牌{    int iRandNum;    srand(time(0));//取时间随机数    iRandNum = rand() % 54 + 1;    while (Cards[iRandNum] == 1)//被用过的牌会重新取随机数    {        iRandNum = rand() % 54 + 1;    }    Cards[iRandNum] = 1;    return iRandNum;}void showCards(int *Player, int Count)//打印玩家的牌{    int i;    for (i = 1; i <= Count; i++)    {        if (Player[i] == 53)        {            printf(" 小王", Player[i]);        }        else if (Player[i] == 54)        {            printf(" 大王", Player[i]);        }        else if (Player[i] % 4 == 0)        {            printf(" 黑");            changeCard(Player[i]);        }        else if ((Player[i] + 1) % 4 == 0)        {            printf(" 方");            changeCard(Player[i]);        }        else if (Player[i] % 2 == 0)        {            printf(" 红");            changeCard(Player[i]);        }        else        {            printf(" 梅");            changeCard(Player[i]);        }    }}void changeCard(int Card)//将数字和纸牌进行对换{    Card /= 4.001;    switch (Card)    {    case 0:printf("3 "); break;    case 1:printf("4 "); break;    case 2:printf("5 "); break;    case 3:printf("6 "); break;    case 4:printf("7 "); break;    case 5:printf("8 "); break;    case 6:printf("9 "); break;;    case 7:printf("10 "); break;    case 8:printf("J"); break;    case 9:printf("Q"); break;    case 10:printf("K"); break;    case 11:printf("A"); break;    case 12:printf("2"); break;    }}void sortCards(int *Nums, int Length)//排序手中的牌{    int i, j, iTemp;    for (i = 1; i <= Length - 1; i++)    {        for (j = 1; j <= Length - 2; j++)        {            if (Nums[j]>Nums[j + 1])            {                iTemp = Nums[j];                Nums[j] = Nums[j + 1];                Nums[j + 1] = iTemp;            }        }    }}

程序有错麻烦告诉我^_^