C语言实现随机发扑克牌语言实现随机发扑克牌
本文实例为大家分享了C语言实现随机发扑克牌的具体代码,供大家参考,具体内容如下
算法如下:
1、将1-10作为方块、2-20作为梅花,3-30作为红桃,4-40作为黑桃,JQK以及大小王分别排序共54张存放在一维数组中。
3、3个人用一个二维数组来存放三人的牌。
2、主要分为打散(乱序),分配,显示三个操作
打散即洗牌:通过rand以及srand函数来获得,为了避免相同的序列,使用标准时间来作为序列种子。
void shuffle(int *cards, int lenth)
{
int temp, i, index;
time_t t;
srand((unsigned int)(&t));
for (i = 0; i < lenth - 1; i++) //保证每一次交换都是和剩下的数进行交换
{
index = rand() % (lenth - i) + i;
if (index != i)
{
temp = cards[i];
cards[i] = cards[index];
cards[index] = temp;
}
}
}
分配:分配:将乱序的卡组分别依次排入一个二维数组中
void deal(int(*everycards)[18], int* cards)
{
int i, j;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 18; j++)
{
everycards[i][j] = cards[i * 18 + j];
}
}
}
显示:显示:数字卡用迭代的方法显示,而JQK则用switch方法实现
void display(int(*everycards)[18], char *name1, char *name2, char *name3)
{
int i, j;
//方块、梅花、红桃、黑桃
putchar('');
printf("分配卡牌如下:");
for (i = 0; i < 3; i++)
{
switch (i)
{
case 0: printf("%s手上的牌是: ", name1); break;
case 1: printf("%s手上的牌是: ", name2); break;
case 2: printf("%s手上的牌是: ", name3); break;
}
for (j = 0; j < 18; j++)
{
if (everycards[i][j] >= 1 && everycards[i][j] <= 10)
{
printf("方%d ", everycards[i][j]);
}
else if (everycards[i][j] >= 11 && everycards[i][j] <= 20)
{
评论0