Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Poker
Index -> Programming, C -> C Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
ronnieb23




PostPosted: Wed Oct 21, 2009 7:25 pm   Post subject: Poker

I was wondering if someone could help me with my functions.
I need to know how to get my get_a_hand function to store the hands in a_hand



c:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

#define NUM_RANKS 13
#define NUM_SUITS 4
#define NUM_CARDS 5


/* prototypes */

void get_a_hand(bool a_hand[NUM_RANKS][NUM_SUITS]);

void analyze_hand(bool a_hand[NUM_RANKS][NUM_SUITS], int* pairs,bool* three, bool* four, bool* flush, bool* straight);

void print_result(bool hand_a[NUM_RANKS][NUM_SUITS], int pairs_a,bool three_a, bool four_a, bool flush_a, bool straight_a, bool hand_b[NUM_RANKS][NUM_SUITS], int pairs_b, bool three_b, bool four_b, bool flush_b, bool straight_b);


int main(void)
{
  for (;;) {

  }
}



void get_a_hand(bool a_hand[NUM_RANKS][NUM_SUITS])
{
  bool a_hand[NUM_RANKS][NUM_SUITS];
  char ch, rank_ch, suit_ch;
  int rank, suit;
  bool bad_card;
  int cards_read = 0;

  for (rank = 0; rank < NUM_RANKS; rank++) {

    for (suit = 0; suit < NUM_SUITS; suit++)
      a_hand[rank][suit] = false;
  }


  while (cards_read < NUM_CARDS) {
    bad_card = false;

    printf("Enter a card: ");

    rank_ch = getchar();
    switch (rank_ch) {
      case '0':           exit(EXIT_SUCCESS);
      case '2':           rank = 0; break;
      case '3':           rank = 1; break;
      case '4':           rank = 2; break;
      case '5':           rank = 3; break;
      case '6':           rank = 4; break;
      case '7':           rank = 5; break;
      case '8':           rank = 6; break;
      case '9':           rank = 7; break;
      case 't': case 'T': rank = 8; break;
      case 'j': case 'J': rank = 9; break;
      case 'q': case 'Q': rank = 10; break;
      case 'k': case 'K': rank = 11; break;
      case 'a': case 'A': rank = 12; break;
      default:            bad_card = true;
    }

    suit_ch = getchar();
    switch (suit_ch) {
      case 'c': case 'C': suit = 0; break;
      case 'd': case 'D': suit = 1; break;
      case 'h': case 'H': suit = 2; break;
      case 's': case 'S': suit = 3; break;
      default:            bad_card = true;
    }

    while ((ch = getchar()) != '\n')
      if (ch != ' ') bad_card = true;

    if (bad_card)
      printf("Bad card; ignored.\n");
    else if (a_hand[rank][suit])
      printf("Duplicate card; ignored.\n");
    else {
      a_hand[rank][suit] = true;
      cards_read++;
    }
  }
}


void analyze_hand(bool a_hand[NUM_RANKS][NUM_SUITS], int* pairs,bool* three, bool* four, bool* flush, bool* straight)
{

int num_in_rank[NUM_RANKS];
int num_in_suit[NUM_SUITS];
  int num_consec = 0;
  int rank, suit;

  straight = false;
  flush = false;
  four = false;
  three = false;
  pairs = 0;

  /* check for flush */
  for (suit = 0; suit < NUM_SUITS; suit++)
    if (num_in_suit[suit] == NUM_CARDS)
      flush = true;

  /* check for straight */
  rank = 0;
  while (num_in_rank[rank] == 0) rank++;
  for (; rank < NUM_RANKS && num_in_rank[rank] > 0; rank++)
    num_consec++;
  if (num_consec == NUM_CARDS) {
    straight = true;
    return;
  }

  /* check for 4-of-a-kind, 3-of-a-kind, and pairs */
  for (rank = 0; rank < NUM_RANKS; rank++) {
    if (num_in_rank[rank] == 4) four = true;
    if (num_in_rank[rank] == 3) three = true;
    if (num_in_rank[rank] == 2) pairs++;
  }
}



void print_result(bool hand_a[NUM_RANKS][NUM_SUITS], int pairs_a,bool three_a, bool four_a, bool flush_a, bool straight_a, bool hand_b[NUM_RANKS][NUM_SUITS], int pairs_b, bool three_b, bool four_b, bool flush_b, bool straight_b)
{
  if (straight && flush) printf("Straight flush");
  else if (four)         printf("Four of a kind");
  else if (three &&
           pairs == 1)   printf("Full house");
  else if (flush)        printf("Flush");
  else if (straight)     printf("Straight");
  else if (three)        printf("Three of a kind");
  else if (pairs == 2)   printf("Two pairs");
  else if (pairs == 1)   printf("Pair");
  else                   printf("High card");

  printf("\n\n");
}


Mod Edit: Syntax tags please![/syntax]
Sponsor
Sponsor
Sponsor
sponsor
Display posts from previous:   
   Index -> Programming, C -> C Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 1 Posts ]
Jump to:   


Style:  
Search: