模拟随机发扑克牌
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