所以我做了一个程序,它将每张牌从一副牌分配到一个阵列中。我被要求制作一个shuffle函数,displayCard函数,以及一个dealCard函数。我真正感到困惑的是dealCard
函数。我没有从甲板上处理/取出卡片而不再将其放入deck[]
的概念。
答案 0 :(得分:0)
除非我遗漏了某些东西,否则解决方案对我来说似乎很简单。
处理不在套牌中的卡片的一种方法是将deck
中该卡的值设置为超出范围值。
deck
中项目值的有效范围是0-51。例如,定义
// You can use any number that is not in the range 0-51
const char INVALID_CARD = -1;
从deck
移除卡片时,请将卡片中的卡片值分配为INVALID_CARD
。检查现有的卡片组时,请确保忽略值为INVALID_CARD
的项目。
答案 1 :(得分:0)
而不是将卡片组视为char deck[SIZE]
,将卡片组重新定义为
char deck[SIZE];
int deck_count;
或作为结构:
typedef struct {
char deck[SIZE];
int n;
} stock;
然后创建操作股票的函数:
void stock_newdeck(stock *st); // fresh deck of 52 cards: ordered
void stock_shuffle(stock *st); // shuffle the n cards
int stock_isempty(stock *st); // any cards left?
char stock_draw(stock *st); // draw the top card