|
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: 2305 (0x901) Types: TextFile Names: »deal.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Bidding/deal.c«
/* deal.c */ /* Bridge Bidder Version 3.0 by John Oswalt and Nathan Glasser ..!sun!megatest!jao (usenet) nathan@brokaw.lcs.mit.edu (internet) nathan@mit-eddie.uucp (usenet) June, 1989 ------------------------------------------------------------------------------ Copyright 1988, 1989 by Nathan Glasser and John Oswalt. You may feel free to distribute this program in its current form. Please do not remove this copyright information. */ #include "bidding.h" card_compare(pcard1,pcard2) card *pcard1,*pcard2; { return((pcard1->suit != pcard2->suit) ? (pcard1->suit - pcard2->suit) : (pcard2->rank - pcard1->rank)); } deal_hands(pdeal) deal *pdeal; { card *thehand; int player,cardsinhand; int cardnum; int nextcard; static vulnerability = 0; pdeal->num_bids = 0; pdeal->bidding_done = 0; vulnerability = ((pdeal->vulnerability = vulnerability) + 1) % 4; pdeal->opening_lead.rank = pdeal->opening_lead.suit = -1; for (player = 0; player < 4; player++) { thehand = pdeal->hands[player]; if (!hand_setup[player]) for (cardsinhand = 0; cardsinhand < 13; cardsinhand++) { nextcard = random() % (cardsleft--); for (cardnum = 0 ; cardsused[cardnum] || --nextcard >=0; cardnum++); cardsused[cardnum] = 1; thehand[cardsinhand].suit = cardnum / 13; thehand[cardsinhand].rank = 2 + (cardnum % 13); } qsort(thehand,13,sizeof(card),card_compare); } } print_hand(fp,thehand) FILE *fp; card *thehand; { int i; char bufs[4][80]; format_hand(bufs,thehand); for (i = 0; i < 4; i++) { fputs(bufs[i],fp); putc('\n',fp); } } /* Accepts an array of size four of strings, and formats into it */ format_hand(bufs,thehand) char (*bufs)[80]; card *thehand; { extern char *suit_strings[]; static char card_chars[] = "xx23456789TJQKA"; int suit_num = -1; int i; static char card_str[3] = " A"; bufs--; for (i = 0; i < 13; i++) { while (thehand[i].suit != suit_num) sprintf(*++bufs,"%8s: ",suit_strings[++suit_num]); card_str[1] = card_chars[thehand[i].rank]; strcat(*bufs,card_str); } while (suit_num < 3) sprintf(*++bufs,"%8s: ",suit_strings[++suit_num]); }