예제 #1
0
파일: deck.c 프로젝트: github188/qipai
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;
}
예제 #2
0
파일: test.c 프로젝트: JinghanGuo/shared
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);
}
예제 #3
0
파일: card_player.c 프로젝트: cncr031/libqp
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;
}