C语言实现洗牌与发牌游戏

 更新时间:2020年12月29日 08:45:08   作者:零商  
这篇文章主要为大家详细介绍了C语言洗牌与发牌游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现洗牌与发牌游戏的具体代码,供大家参考,具体内容如下

普通版

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define SUITS 4
#define FACES 13
#define CARDS 52

void shuffle(int wDeck[][FACES]);
void send(int wDeck[][FACES], const char* wSuit[], const char* wFace[]);

void main()
{
 int deck[SUITS][FACES]={0};
 const char* suit[SUITS]={"Heart","Diamond","Club","Spade"};
 const char* face[FACES]={"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
 
 srand(time(NULL));
 shuffle(deck);
 send(deck, suit, face);
}

void shuffle(int wDeck[][FACES])
{
 int row,column,card;

 for(card=1;card<=CARDS;card++)
 {
 row = rand() % SUITS;
 column = rand() % FACES;
 while(wDeck[row][column] != 0)
 {
 row = rand() % SUITS;
 column = rand() % FACES;
 }
 wDeck[row][column] = card;
 }
}

void send(int wDeck[][FACES], const char* wSuit[], const char* wFace[])
{
 int card,row,column;
 for(card=1;card<=CARDS;card++)
 {
 for(row=0;row<SUITS;row++)
 {
 for(column=0;column<FACES;column++)
 {
 if(wDeck[row][column] == card)
 {
  printf("%5s of %-8s%c",wFace[column],wSuit[row], card % 2 ==0 ? '\n' : '\t');
 }
 }
 }
 }
}

高性能版

//先按顺序填满52个格子,再产生随机格子相互交换

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define CARDS 52
#define FACES 13

struct card
{
 const char* face;
 const char* suit;
};
typedef struct card Card;

void shuffle(Card *const wDeck);
void send(const Card *const wDeck);//指针常量与数据常量均不可以改变,都用const限定,*前是限定指针,*后是限定数据

void main()
{
 const char* wSuit[]={"Heart","Diamond","Club","Spade"};//指针数组是一个数组
 const char* wFace[]={"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
 int i;
 Card deck[CARDS];
 for(i=0;i<CARDS;i++)
 {
 deck[i].suit = wSuit[i / FACES];
 deck[i].face = wFace[i % FACES];
 }
 
 srand(time(NULL));
 shuffle(deck);
 send(deck);
}

void shuffle(Card *const wDeck)
{
 int i,j;
 Card temp;
 for(i=0;i<CARDS;i++)
 {
 j = rand() % CARDS;
 temp = wDeck[i];
 wDeck[i] = wDeck[j];
 wDeck[j] = temp;
 }
}

void send(const Card *const wDeck)
{
 int i;
 for(i=0;i<CARDS;i++)
 {
 printf("%5s of %-8s%c",wDeck[i].face,wDeck[i].suit, (i+1) % 4 == 0 ? '\n' : '\t');
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于C语言实现点菜系统

    基于C语言实现点菜系统

    这篇文章主要为大家详细介绍了基于C语言实现点菜系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++学习之算术运算符使用详解

    C++学习之算术运算符使用详解

    运算符是计算机语言提供的能对数据进行基本运算操作的功能体。而算术运算符用来对数字型数据进行数学语义上的加、减、乘、除。本文通过讲解清楚算术运算符,让大家了解使用C++运算符时应该注意的事项
    2022-06-06
  • C++面向对象编程之析构详解

    C++面向对象编程之析构详解

    这篇文章主要为大家详细介绍了C++面向对象编程之析构,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • c++ 成员函数与非成员函数的抉择

    c++ 成员函数与非成员函数的抉择

    尽量用类的非成员函数以及友元函数替换类的成员函数 例如一个类来模拟人People
    2013-01-01
  • VC对自定义资源加密解密(AES)的详解

    VC对自定义资源加密解密(AES)的详解

    本篇文章是对VC对自定义资源加密解密(AES)进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C++实现LeetCode(169.求大多数)

    C++实现LeetCode(169.求大多数)

    这篇文章主要介绍了C++实现LeetCode(169.求大多数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++与Java分别解决活动选择问题和带权活动选择问题

    C++与Java分别解决活动选择问题和带权活动选择问题

    这篇文章介绍了C++与Java分别解决活动选择问题和带权活动选择问题,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 基于matlab对比度和结构提取的多模态解剖图像融合实现

    基于matlab对比度和结构提取的多模态解剖图像融合实现

    这篇文章主要介绍了多模态医学图像配准与融合的概念、方法及意义,最后简单介绍了小波变换分析方法。感兴趣的小伙伴可以跟随小编一起学习一下
    2021-11-11
  • 一起来学习C++的动态内存管理

    一起来学习C++的动态内存管理

    这篇文章主要为大家详细介绍了C++的动态内存管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • c++代码实现tea加密算法的实例详解

    c++代码实现tea加密算法的实例详解

    这篇文章主要介绍了c++代码实现tea加密算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论