C++模拟洗牌发牌(带花色)

该程序使用C++编写,定义了一个结构体表示扑克牌,包括花色和面值。程序首先存储54张牌,然后进行洗牌操作,再将牌分发给三个玩家,最后显示剩余的底牌。洗牌通过随机交换牌的位置实现,发牌则按照特定规则分给玩家。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>

#include<cstring>

#include<cstdlib>

#include<ctime>

using namespace std;

struct brand {

char face[10];//牌的花色

char value[10];//牌的面值

};

void deposit(brand arr_data[]);//存54张牌

void wash(brand arr_data[]);//洗牌

void distribute(brand arr_data[]);//发牌

char arr_face[4][10] = { {(char)3 }, {(char)4}, {(char)5}, {(char)6} };//利用强制类型转换打出卡牌图案

char arr_value[13][10] = { "A","2","3","4","5","6","7","8","9","10","J","Q","K" };

int main()

{

struct brand arr_data[54];

deposit(arr_data);

wash(arr_data);

distribute(arr_data);

return 0;

}

void deposit(brand arr_data[])//存54张牌

{

for (int i = 0; i < 52; ++i)//存入除大小王以外的52张

{

strcpy_s(arr_data[i].face,arr_face[i / 13]);

strcpy_s(arr_data[i].value, arr_value[i % 13]);

}

strcpy_s(arr_data[52].face, "red");//大王

strcpy_s(arr_data[52].value, "Joker");

strcpy_s(arr_data[53].face, "black");//小王

strcpy_s(arr_data[53].value, "Joker");

}

void wash(brand arr_data[])//洗牌

{

srand((unsigned)time(NULL));//利用随机数种种子

for (int i = 0; i < 54; ++i)//将第i个与第随机个交换值

{

int j = rand() % 54;

if (i != j)

{

swap(arr_data[i], arr_data[j]);

}

}

}

void distribute(brand arr_data[])//发牌

{

brand P[3][17];

int p1 = 0, p2 = 0, p3 = 0;

for (int i = 0; i < 51; ++i)

{

if (i % 3 == 0)

{

P[0][p1++] = arr_data[i];

}

else if (i % 3 == 1)

{

P[1][p2++] = arr_data[i];

}

else

P[2][p3++] = arr_data[i];

}

cout << "玩家1\t\t" << "玩家2\t\t" << "玩家3\t\t" << endl;

for (int j = 0; j < 17; ++j)

{

for (int i = 0; i < 3; ++i)

{

cout << P[i][j].face << " " << P[i][j].value << "\t\t";

}

cout << endl;

}

cout << "最后三张底牌:" << endl;

for (int i = 51; i < 54; ++i)

{

cout << arr_data[i].face << " " << arr_data[i].value << "\t\t";

}

}

让调试控制台显示图案的办法:

  1. 右击调试控制台上面留白的部分;

  1. 点击默认值选项->控制台字体属性;

  1. 在字体中找到“点阵字体“,点击确认就OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值