#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";
}
}

让调试控制台显示图案的办法:
右击调试控制台上面留白的部分;
点击默认值选项->控制台字体属性;
在字体中找到“点阵字体“,点击确认就OK了。
