deck_t* deck_new(int number, int have_joker) { deck_t* deck; card_t* p; int n,i,j,k; int idx; if(have_joker) n = 54; else n = 52; deck = (deck_t*)malloc(sizeof(deck_t)); if(!deck) return 0; deck->poker = hand_new(number * n); if(!deck->poker){ deck_free(deck); return 0; } deck->num_pack = number; deck->card_adv_id = 0; deck->deal_index = 0; deck->have_joker = have_joker; idx = 0; p = deck->poker->cards; for(i = 0; i < number; ++i){ for(j = cdSuitDiamond; j <= cdSuitSpade; ++j){ for(k = cdRankAce; k <= cdRankK; ++k){ p->rank = k; p->suit = j; p++; } } if(have_joker){ p->suit = cdSuitJoker; p->rank = cdRankSJoker; p++; p->suit = cdSuitJoker; p->rank = cdRankBJoker; p++; } } deck->poker->num = number * n; deck_shuffle(deck); return deck; }
int main (int argc, char **argv) { hand h; printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); printf("%s\n", card_name(draw())); h = hand_new(); printf("Hit:\n"); hit(&h); hit(&h); hit(&h); exit(0); }
int card_player_init(card_player_t* player, int max_card_num) { int size; if(!player) return HTERR_PARAM; if(max_card_num <= 0) max_card_num = 54; player->mycards = hand_new(max_card_num); if(!player->mycards) return HTERR_OUTOFMEMORY; player->position = -1; player->data = 0; return HT_OK; }