Card game in which from 2 to 10 people.
For the game over 4 people takes a new deck.
Tell me please:
- How to distribute cards so that each player has at least one card of EVERY suit?
- How to remove those cards that have already been distributed?
I try to use struct Card in which the suit and value of the card is stored. My method so far only randomly distributes suits (numbers from 1 to 4) and the cards themselves (from 1 to 13). + a method which shows these cards.
void dealCards( Card playersCardsData[MAX_NUM_OF_PLAYERS][NUM_OF_CARDS], int numOfPlayers ) { for( int player = 0; player < numOfPlayers; player++ ) { for( int card = 0; card < NUM_OF_CARDS; card++ ) { playersCardsData[player][card].suit = rand() % 4 + 1; //generates random numbers from 1 till 4 --> faces printf( "%2d | ", playersCardsData[player][card].suit ); playersCardsData[player][card].value = rand() % 12 + 2; //generates random numbers from 2 till 14 //printf("%2d |", playersCardsData[player][card].value); } //inner for printf( "\n" ); } //outer for } void diplayPlayersCards( Player players[MAX_NUM_OF_PLAYERS], Card playersCardsData[MAX_NUM_OF_PLAYERS][NUM_OF_CARDS], int numOfPlayers ) { printf( "PLAYERS DATA \n" ); printf( "%3s %10s |", " ", " " ); for( int i = 0; i < NUM_OF_CARDS; i++ ) { printf( "%2d |", i + 1 ); } printf( "\n----------------------------------------------------------------------------------------------\n" ); for( int playerIndex = 0; playerIndex < numOfPlayers; playerIndex++ ) { printf( "%3s %10s |", " ", players[playerIndex].name ); for( int card = 0; card < NUM_OF_CARDS; card++ ) { switch( playersCardsData[playerIndex][card].suit ) { case 1: printf( "%2c", 'H' ); //hearts break; case 2: printf( "%2c", 'D' ); //diamonds break; case 3: printf( "%2c", 'S' ); //spades break; case 4: printf( "%2c", 'C' ); //clubs break; } if( 1 < playersCardsData[playerIndex][card].value && playersCardsData[playerIndex][card].value < 11 ) { printf( "%2d |", playersCardsData[playerIndex][card].value ); } else { switch( playersCardsData[playerIndex][card].value ) { case 11: printf( "%2c |", 'J' ); //jack break; case 12: printf( "%2c |", 'Q' ); //queen break; case 13: printf( "%2c |", 'K' ); //king break; case 14: printf( "%2c |", 'A' ); //ace break; } } } // cards printf( "\n" ); } printf( "\n" ); }