Frats
Terugkerende gebruiker
- Lid geworden
- 22 nov 2008
- Berichten
- 4.492
Het programma blijft continue hangen in het dikgedrukte stuk en ik heb me er eergisteren blind op gestaard, maar volgensmij zie ik iets heel simpels over het hoofd ofzo :/
card[] is een globale array met 7 kaart-typen als keys en de aantallen als velden
hand[][] is een twee dimensionale array met spelers X kaarten (dus bijv: hand[1][4] is de vierde kaart van de eerste speler)
Hij deelt een aantal kaarten rond, maar na een tijdje stopt hij ineens, en kan dus niet vinden waarom hij blijft hangen in dat While loopje...
Ik hoop dat iemand me kan helpen.
card[] is een globale array met 7 kaart-typen als keys en de aantallen als velden
hand[][] is een twee dimensionale array met spelers X kaarten (dus bijv: hand[1][4] is de vierde kaart van de eerste speler)
Hij deelt een aantal kaarten rond, maar na een tijdje stopt hij ineens, en kan dus niet vinden waarom hij blijft hangen in dat While loopje...
Ik hoop dat iemand me kan helpen.
Code:
/*
* Main game process. will setup a new game and activate it.
*
*/
Process start_game()
Private
total_cards = 24; // total number of cards in the game
current_player = 1; // the current players we are dealing to
current_card = 1; // the current round of cards we're dealing
i = 0; // general purpose counter
Begin
// game setup: ready all cards
card[ 1 ] = 4;
card[ 2 ] = 4;
card[ 3 ] = 4;
card[ 4 ] = 4;
card[ 5 ] = 4;
card[ 6 ] = 3;
card[ 7 ] = 1;
// ready the hands of each player
While ( total_cards > 0 )
// get a random card and add it to this hand (removing it from card, too)
hand[ current_player ][ current_card ] = get_random_card();
// if not all players have an equal number of cards
If ( current_player < players )
// advance to the next player
current_player++;
Else
// otherwise, start at the first player
current_player = 1;
// and deal the next series of cards.
current_card++;
End;
// note one card gone
total_cards--;
End;
End;
/**
* Remove a card from the card list, and return its type
*/
Function get_random_card ()
Private
number_cards = 0; // total number of cards
i = 0; // general purpose counter
card_to_remove = 0; // the card number to remove
type_to_remove = 0; // the type of the card we've removed
Begin
// count the number of cards
For ( i = 1; i <= 7 ; i++ )
// add the number of this card remaining.
number_cards += card[ i ];
End;
// get a random number; this is the card to remove.
card_to_remove = rand ( 1, number_cards );
// find the selected card in the list
i = 1;
[b]
While ( card_to_remove > 0 )
// consider this the card to use.
type_to_remove = i;
// reduce the card number by the number of cards of this type
card_to_remove -= card[ i ];
End;
[/b]
// we know the card type to remove.
// remove one card of that type; then return it's type value.
card[ type_to_remove ]--;
return type_to_remove;
End;