card allocation

本文介绍了一个简单的扑克牌分配算法,该算法将52张牌均匀地分发给四个玩家,并详细说明了如何通过一维数组和二维数组来表示牌的不同状态。

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

//

//  main.c

//  card allocation

//

//  Created by sky.dai on 2016/11/19.

//  Copyright © 2016 sky. All rights reserved.

//




//问题可看成一副现成的扑克牌,四个人轮流抓牌

// 52张扑克牌的顺序为A 2 3 4 5 6 7 8 9 10 J Q K   梅花

//A 2 3 4 5 6 7 8 9 10 J Q K              方块

//A 2 3 4 5 6 7 8 9 10 J Q K      红桃

//A 2 3 4 5 6 7 8 9 10 J Q K     黑桃


/*0-51代表52张牌,不考虑花色则存放在数组card[52]中,而题目考虑花色,则定义在二维数组card[4][13]

 

card[4][13];//存放4个人手中牌的花色,其中

 

 card[0][]  card[1][]  card[2][]  card[3][]

 0-c,1-d,2-h,3-s

 

 s 代表 spades(黑桃♠️

 h 代表 hearts (红桃❤️

 d 代表 diamond (方块

void Player_Init(struct LinkNode** header, CARD* Library, int n, int c, int WasteSize, int DeckSize) { char temp[10]; // 临时存放玩家姓名 CARD* Waste_Card = (CARD*)malloc(sizeof(CARD) * WasteSize); // 修改为动态数组 if (Waste_Card == NULL) { printf("Memory allocation failed for Waste_Card\n"); return; } for (int i = 0; i < n; i++) { printf("please input the name of %dth player:", i + 1); scanf("%s", temp); // 先创建新结点 struct LinkNode* newnode = (struct LinkNode*)malloc(sizeof(struct LinkNode)); if (newnode == NULL) { printf("Memory allocation failed for newnode\n"); free(Waste_Card); return; } strcpy(newnode->name, temp); struct CARD* TEMP_card = (struct CARD*)malloc(c * sizeof(struct CARD)); if (TEMP_card == NULL) { printf("Memory allocation failed for TEMP_card\n"); free(newnode); free(Waste_Card); return; } for (int j = 0; j < c; j++) { TEMP_card[j] = Library[0]; // 调整 Waste_Card 大小 Waste_Card = (CARD*)realloc(Waste_Card, (WasteSize + 1) * sizeof(CARD)); if (Waste_Card == NULL) { printf("realloc failed for Waste_Card\n"); free(TEMP_card); free(newnode); return; } Waste_Card[WasteSize] = Library[0]; WasteSize++; // 调整 Library 大小 Library = (CARD*)realloc(Library, (DeckSize - 1) * sizeof(struct CARD)); if (Library == NULL) { printf("realloc failed for Library\n"); return; } memmove(Library, Library + 1, (DeckSize - 1) * sizeof(struct CARD)); DeckSize--; // 再次调整 Waste_Card 大小 Waste_Card = (CARD*)realloc(Waste_Card, WasteSize * sizeof(struct CARD)); } newnode->card = TEMP_card;
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值