100.扑克牌自动发牌

简介: 100.扑克牌自动发牌
#include<stdlib.h>
#include<stdio.h>
int comp(const void *j,const void *i);
void p(int p,int b[],char n[]);
void main()
{
    static char n[]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
    int a[53],b1[13],b2[13],b3[13],b4[13];
    int b11=0,b22=0,b33=0,b44=0,t=1,m,flag,i;
    clrscr();
    puts("******************************************************");
    puts("*      This is an Automatic Dealing Card program!    *");
    puts("*  In one game, 52 cards are divided into 4 groups.  *");
    puts("******************************************************");
    printf(" >> ----- Each person's cards are as follows. -------");
    while(t<=52)           /*控制发52张牌*/
    {     m=random(52);      /*产生0到51之间的随机数*/
          for(flag=1,i=1;i<=t&&flag;i++)   /*查找新产生的随机数是否已经存在*/
            if(m==a[i]) flag=0;      /*flag=1:产生的是新的随机数
                                        flag=0:新产生的随机数已经存在*/
          if(flag)
          {
             a[t++]=m;       /*如果产生了新的随机数,则存入数组*/
             if(t%4==0) b1[b11++]=a[t-1];        /*根据t的模值,判断当前*/
             else if(t%4==1) b2[b22++]=a[t-1];   /*的牌应存入哪个数组中*/
             else if(t%4==2) b3[b33++]=a[t-1];
             else if(t%4==3) b4[b44++]=a[t-1];
          }
      }
      qsort(b1,13,sizeof(int),comp);      /*将每个人的牌进行排序*/
      qsort(b2,13,sizeof(int),comp);
      qsort(b3,13,sizeof(int),comp);
      qsort(b4,13,sizeof(int),comp);
      p(1,b1,n); p(2,b2,n); p(3,b3,n); p(4,b4,n);     /*分别打印每个人的牌*/
      printf(" >> ----------- Press any key to quit... ------------");
      getch();
}
void p(int p,int b[],char n[])
{
   int i;
   printf("\n   Person No.%d   \006 ",p);        /*打印黑桃标记*/
   for(i=0;i<13;i++)        /*将数组中的值转换为相应的花色*/
      if(b[i]/13==0) printf(" %c",n[b[i]%13]);      /*该花色对应的牌*/
   printf("\n                 \003 ");        /*打印红桃标记*/
   for(i=0;i<13;i++)
      if((b[i]/13)==1) printf(" %c",n[b[i]%13]);
   printf("\n                 \004 ");        /*打印方块标记*/
   for(i=0;i<13;i++)
      if(b[i]/13==2) printf(" %c",n[b[i]%13]);
   printf("\n                 \005 ");        /*打印梅花标记*/
   for(i=0;i<13;i++)
      if(b[i]/13==3||b[i]/13==4) printf(" %c",n[b[i]%13]);
   printf("\n");
}
int comp(const void *j,const void *i)     /*qsort调用的排序函数*/
{
   return(*(int*)i-*(int*)j);
}
相关文章
|
5月前
|
Java 索引
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
Java实现扑克牌游戏 | 随机发牌 ( 过程拆分详解+完整代码 )
129 3
|
7月前
|
存储 算法 PHP
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
45 1
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
|
算法 测试技术 C#
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落
一题三解(暴力、二分查找算法、单指针):鸡蛋掉落
|
算法 Java
代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球
代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球
70 0
Leecode 914.卡牌分组
Leecode 914.卡牌分组
85 0
用Java实现简易的洗牌和发牌功能
在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?
简单设计一下洗牌和发牌
简单设计一下洗牌和发牌
114 0
简单设计一下洗牌和发牌
|
程序员
线性表练习扑克牌游戏(炸金花)
线性表练习扑克牌游戏(炸金花)
177 0
线性表练习扑克牌游戏(炸金花)
|
开发工具
扑克牌问题
扑克牌问题
扑克牌问题