ChatGPT尝试为您解答,仅供参考
在Deal函数中,可以使用临时变量temp来保存card[i]的值,然后将card[i]的值赋为card[result[i]],最后将temp赋值给card[result[i]]。具体实现如下:
void Deal(CARD card[],int result[])
{
for(int i = 0;i < 52;i ++)
{
CARD temp = card[i];
card[i] = card[result[i]];
card[result[i]] = temp;
}
}
发牌时,可以使用循环来分别输出4位玩家的牌。具体实现如下:
void Deal(CARD card[],int result[])
{
for(int i = 0;i < 52;i ++)
{
CARD temp = card[i];
card[i] = card[result[i]];
card[result[i]] = temp;
}
for (int i = 0; i < 52; i++)
{
printf("%s%s ", card[i].face, card[i].suit);
if ((i + 1) % 13 == 0)
{
printf("\n");
}
}
}
最后,在main函数中调用Deal函数即可完成发牌的模拟。
在main函数中,您可以添加一个循环来模拟多局游戏。每次循环,您可以输入一个随机数种子,然后调用Wash函数洗牌,最后调用Deal函数发牌。具体实现如下:
int main()
{
int result[52];
CARD card[52];
FillCard(card);
int game_rounds;
scanf("%d", &game_rounds);
for (int i = 0; i < game_rounds; i++)
{
int seed;
scanf("%d", &seed);
srand(seed);
Wash(result);
Deal(card, result);
}
return 0;
}
您还可以在Deal函数中输出玩家的编号,方便您区分不同玩家的手牌。具体实现如下:
void Deal(CARD card[],int result[])
{
for(int i = 0;i < 52;i ++)
{
CARD temp = card[i];
card[i] = card[result[i]];
card[result[i]] = temp;
}
for (int i = 0; i < 52; i++)
{
printf("player %d: %s%s ", (i % 4) + 1, card[i].face, card[i].suit);
if ((i + 1) % 13 == 0)
{
printf("\n");
}
}
}