码迷,mamicode.com
首页 > 编程语言 > 详细

指针数组和扑克牌的洗牌与发牌

时间:2018-01-02 15:18:28      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:hit   div   随机   get   set   dea   white   signed   image   

Date:1.2

在rand()之前使用srand()?

使用:每次产生随机数不同

不使用:每次产生的随机数相同

  1. #include "stdafx.h"  
  2. #include <time.h>  
  3. #include <stdlib.h>  
  4.     
  5. #define SUITS 4  
  6. #define FACES 13  
  7. #define CARDS 52  
  8.     
  9. void shuffle(unsigned int wDeck[][FACES]) //洗牌 deck表示一副牌  
  10. {  
  11.     for (size_t card = 1; card <= CARDS; card++)  
  12.     {  
  13.         size_t row;  
  14.         size_t column;  
  15.         do {  
  16.             row = rand() % SUITS;  
  17.             column = rand() % FACES;  
  18.         } while (wDeck[row][column] != 0);  
  19.         wDeck[row][column] = card;  
  20.     }  
  21. }  
  22.     
  23. void deal(unsigned int wDeck[][FACES], const char *wFace[], const char *wSuit[])  
  24. {  
  25.     for (size_t card = 1; card < CARDS; card++)  
  26.     {  
  27.         for (size_t row = 0; row < SUITS; row++)  
  28.         {  
  29.             for (size_t column = 0; column < FACES; column++)  
  30.             {  
  31.                 if (wDeck[row][column] == card) {  
  32.                     printf("%5s of %-8s%c", wFace[column], wSuit[row], card % 2 == 0 ? ‘\n‘ : ‘\t‘);  
  33.                 }  
  34.             }  
  35.         }  
  36.     }  
  37.     
  38. }  
  39.     
  40.     
  41. int main()  
  42. {  
  43.     unsigned int deck[SUITS][FACES];  
  44.     memset(deck, 0, sizeof(deck));  
  45.     
  46.     srand(time(NULL));  
  47.     shuffle(deck); //洗牌  
  48.     
  49.     const char *suit[SUITS] = { "红桃","方块","梅花","黑桃" };  
  50.     const char *face[FACES] = { "Ace","Deuce","Three" ,"Four" ,"Five" ,"Six" ,"Seven" ,"Eight",  
  51.         "Nine","Ten","Jack","Queen","King" };  
  52.     
  53.     deal(deck, face, suit); //发牌  
  54.     
  55.     getchar();  
  56.     return 0;  
  57. }  

 

技术分享图片

 

算法有缺陷( deal()函数 如果已有 wDeck[row][column] == card 循环还是会继续 ),之后改进。

指针数组和扑克牌的洗牌与发牌

标签:hit   div   随机   get   set   dea   white   signed   image   

原文地址:https://www.cnblogs.com/kazoo310/p/8176745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!