模拟随机发扑克牌

 1 #include "stdafx.h"
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<time.h>
 5 
 6 int comp(const void *a,const void *b);
 7 void print(int num,int p[],char cardValue[]);
 8 
 9 int _tmain(int argc, _TCHAR* argv[])
10 {
11     srand((unsigned)time(0));
12     int n=rand();
13     static char cardValue[]={'A','2','3','4','5','6','7'
14         ,'8','9','10','J','Q','K'};
15     int a[53];//牌数
16     int p1[13],p2[13],p3[13],p4[13];//4位玩家的牌数
17     int  psub1=0,psub2=0,
18               psub3=0,psub4=0,t=1,temp=0,flag=0,i;
19     while(t<=52)
20     {
21         temp=rand()%52;//中转变量
22         for(flag=1,i=1;i<=t&&flag;i++)
23         {
24             if(temp==a[i])//a跳转赋值
25                 flag=0;
26         }
27         if(flag)    //平均给4个玩家发13张不同的牌
28         {
29             a[t++]=temp;
30             if(t%4==0)    //0 1 2 3 轮流给玩家发牌
31                 p1[psub1++]=a[t-1];
32             if(t%4==1)    //0 1 2 3 轮流给玩家发牌
33                 p2[psub2++]=a[t-1];
34             if(t%4==2)    //0 1 2 3 轮流给玩家发牌
35                 p3[psub3++]=a[t-1];
36             if(t%4==3)    //0 1 2 3 轮流给玩家发牌
37                 p4[psub4++]=a[t-1];
38         }
39     }
40     qsort(p1,13,sizeof(int),comp); //传入函数指针
41     qsort(p2,13,sizeof(int),comp);
42     qsort(p3,13,sizeof(int),comp);
43     qsort(p4,13,sizeof(int),comp);
44     print(1,p1,cardValue);
45     print(2,p2,cardValue);
46     print(3,p1,cardValue);
47     print(4,p1,cardValue);
48     getchar();
49     return 0;
50 }
51 
52 void print(int num,int p[],char cardValue[])
53 {
54     int i;
55     printf("\n 玩家:%d  \006 ",num);
56     for(i=0;i<13;++i)
57     {
58         //每个玩家都要有4个花色
59         if(p[i]/13==0)
60             printf("%c ",cardValue[p[i]%13]);
61     }
62     printf("\n     \003 ");
63     for(i=0;i<13;++i)
64     {
65         //每个玩家都要有4个花色
66         if(p[i]/13==1)
67             printf("%c ",cardValue[p[i]%13]);
68     }
69     printf("\n     \005 ");
70     for(i=0;i<13;++i)
71     {
72         //每个玩家都要有4个花色
73         if(p[i]/13==2)
74             printf("%c ",cardValue[p[i]%13]);
75     }
76     printf("\n     \004 ");
77     for(i=0;i<13;++i)
78     {
79         //每个玩家都要有4个花色
80         if(p[i]/13==3)
81             printf("%c ",cardValue[p[i]%13]);
82     }
83 }
84 int comp(const void *a,const void *b)
85 {
86     return (*(int *)a-*(int*)b);  //升序 
87     //反之降序 (*(int *)b-*(int*)a)
88 }
89              

 

posted @ 2017-04-22 14:10  gd_沐辰  阅读(503)  评论(0编辑  收藏  举报