c语言实现扑克牌的洗牌、发牌功能
首先是得到牌的四种花色、点数;
char poker_kinds[4] = {3,4,5,6};//扑克牌花色ASCII码
char *poker_points[13] = {"A","2","3","4","5",
"6","7","8","9","10","J","Q","K"};//扑克牌点数
//扑克牌结构体,包含花色和点数
typedef struct poker
{
char kinds;//花色
char points[3];// 申请3字节空间存储点数
}Poker;
//扑克牌结构体数组
Poker poker[52]; //52张扑克牌
初始化扑克牌
//初始化扑克牌
void initPoker(Poker *poker)
{
int i,j=0,k=0;
for(i=0; i<52; i++)
{
if(i%4 == 0)
j=0;
if(i%13 == 0)
k=0;
while(j<4 && k<13)
{
poker[i].kinds = poker_kinds[j]; //扑克牌花色ASCII码
strcpy(poker[i].points, poker_points[k]); //扑克牌点数
j++;
k++;
break;
}
}
}
洗牌
//洗牌
void shuffle(Poker *poker)
{
Poker *a, *b, temp;
srand((unsigned)time(NULL));
//随机抽取两张牌对调,对调100次
for(int i=0; i<100; i++)
{
a = poker + rand() % 52;
b = poker + rand() % 52;
temp = *a;
*a = *b;
*b = temp;
}
}
发牌及完整代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
char poker_kinds[4] = {3,4,5,6};//扑克牌花色ASCII码
char *poker_points[13] = {"A","2","3","4","5",
"6","7","8","9","10","J","Q","K"};//扑克牌点数
//扑克牌结构体,包含花色和点数
typedef struct poker
{
char kinds;//花色
char points[3];// 申请3字节空间存储点数
}Poker;
//扑克牌结构体数组
Poker poker[52]; //52张扑克牌
//初始化扑克牌
void initPoker(Poker *poker)
{
int i,j=0,k=0;
for(i=0; i<52; i++)
{
if(i%4 == 0)
j=0;
if(i%13 == 0)
k=0;
while(j<4 && k<13)
{
poker[i].kinds = poker_kinds[j]; //扑克牌花色ASCII码
strcpy(poker[i].points, poker_points[k]); //扑克牌点数
j++;
k++;
break;
}
}
}
//洗牌
void shuffle(Poker *poker)
{
Poker *a, *b, temp;
srand((unsigned)time(NULL));
//随机抽取两张牌对调,对调100次
for(int i=0; i<100; i++)
{
a = poker + rand() % 52;
b = poker + rand() % 52;
temp = *a;
*a = *b;
*b = temp;
}
}
//显示
void displayPoker(Poker *poker)
{
for(int i=0; i<52; i++)
{
printf("%c%s ",poker[i].kinds, poker[i].points);
if((i+1) %13 == 0)
{
printf("\n");
}
}
}
int main(void)
{
printf("洗牌前: \n");
initPoker(poker); //调用初始化扑克牌函数
displayPoker(poker); //显示洗牌前状态
printf("洗牌后: \n");
shuffle(poker); // 调用洗牌函数
displayPoker(poker); // 显示洗牌后状态
return 0;
}
更多有趣的项目源码,尽在下方学习交流群内
C/C++学习,从入门到入坑
https://jq.qq.com/?_wv=1027&k=JGvFlYJm
学习C/C++的小伙伴皆可入,一个学习编程人的聚集地,互相学习,共同进步!!