|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 1668 (0x684) Types: TextFile Names: »draw.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Poker/draw.c«
/* ** Let each player who is still in draw as many as 5 cards to replace ** those he already has in his hand. This routines expects a command ** of the form Dxxxxx from each player program, where x is either ** 'k' to keep the card in that position, or ** 'd' to discard the card in that position. */ # include "draw.h" # include "players.h" # include "showcards.h" # include "tellall.h" # define TRUE 1 # define FALSE 0 void draw( player, n_players, deck, d, first ) PLAYER player[]; /* hands are in here */ int n_players; /* # of players */ int deck[]; /* shuffled deck of cards */ int d; /* next card to take from deck */ int first; /* player who gets to draw first */ { int i,c; char temp[80]; char temp2[20]; int n; int cycle=FALSE; i = first; while ( i != first || !cycle ) { if ( player[i].in ) { sprintf( temp, "T%d", i ); tellall( player, n_players, temp ); tellall( player, n_players, "U" ); if ( i == 0 ) computer_draw( player, temp ); else { writeln( player[i].socket, "D" ); readln( player[i].socket, temp ); } if ( temp[0] != 'D' ) /* what else could it be ?? */ { --i; /* do this man again ! */ continue; } n = 0; for( c=0; c<5; c++ ) if ( temp[c+1] == 'd' ) { player[i].cards[c] = deck[d++]; n++; } if ( n == 0 ) strcpy( temp2, "Draws none" ); else sprintf( temp2, "Draws %d", n ); sprintf( temp, "H%d%s", i, temp2 ); tellall( player, n_players, temp ); tellall( player, n_players, "U" ); if ( i != 0 ) { show( player, temp, i, i ); writeln( player[i].socket, "U" ); } } if ( ++i == n_players ) { cycle = TRUE; i = 0; } } }