C语言发牌系统

来源:互联网 发布:字体秀秀软件 编辑:程序博客网 时间:2024/05/02 00:50

一、//1副牌4个人玩(没有大小王)

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main()

{

       int i,j,k,r,temp;

       int a[52],e[13],s[13],w[13],n[13];

    void f(int b[],int n);

       srand(time(NULL));//一时间作为种子获取随机数

       for(i=0;i<52;i++)

       {

              a[i]=i;

       }

       for(i=0;i<1000;i++)//洗牌过程,使用的方法是:将52张牌中任意两排进行交换,是此过程进行1000次,这副牌的顺序将被打乱,洗牌过程完成

       {

              j=rand()%52;//rand()%n即可获得由0————(n-1)此范围内的随机数(有多少张牌n就取多少)

              k=rand()%52;

        temp=a[j];

              a[j]=a[k];

              a[k]=temp;

       }

 

       printf("S代表黑桃(spade)H代表红桃(heart)D代表方块(diamond)C代表梅花(club)/n");

    for(i=0;i<13;i++)//发牌过程,采用的方法是:每次每人拿一张牌,循环13次,每人拥有13张牌

       {

              e[i]=a[4*i];

              s[i]=a[4*i+1];

              w[i]=a[4*i+2];

              n[i]=a[4*i+3];

             

       }

       printf("东家的牌是:");

       f(e,13);//调用函数f,函数f主要是将每个玩家的牌按黑桃--红桃--方块--梅花,的顺序排放,并且每个花色内部是按A--2(即由大到小的顺序存放)

       printf("/n");   

       printf("南家的牌是:");

       f(s,13);

       printf("/n");

       printf("西家的牌是:");

       f(w,13);

       printf("/n");

       printf("北家的牌是:");

       f(n,13);

       printf("/n");

  

}

void f(int b[],int m)

{

       int x,y,ten;

       for(x=0;x<12;x++)

       {

              for(y=x+1;y<13;y++)

              {

      

                     if(b[x]>b[y])

                     {  ten=b[x];

                        b[x]=b[y];

                        b[y]=ten;

                     }

              }

       }

      

       for(x=0;x<13;x++)

       {

        switch(b[x]%13)

              {

              case 0: printf("A");break;

              case 1: printf("K");break;

              case 2: printf("Q");break;

              case 3: printf("J");break;

              case 4: printf("10");break;

              case 5: printf("9");break;

              case 6: printf("8");break;

              case 7: printf("7");break;

              case 8: printf("6");break;

              case 9: printf("5");break;

              case 10: printf("4");break;

              case 11: printf("3");break;

              case 12: printf("2");break;

              }

        switch(b[x]/13)

              {

              case 0: printf("S");break;

              case 1: printf("H");break;

              case 2: printf("D");break;

              case 3: printf("C");break;

       

              }

              if (x<12) printf(",");//12张牌输出后面都带有逗号

       }

 

}

原创粉丝点击