1*12571Sarnold static char *sccsid = "@(#)crib.c 1.16 (Berkeley) 05/19/83"; 2*12571Sarnold 37871Sarnold # include <curses.h> 47871Sarnold # include <signal.h> 57871Sarnold # include "deck.h" 67871Sarnold # include "cribbage.h" 77871Sarnold # include "cribcur.h" 87706Sarnold 97706Sarnold 107871Sarnold # define LOGFILE "/usr/games/lib/criblog" 117871Sarnold # define INSTRCMD "ul /usr/games/lib/crib.instr | more -f" 127706Sarnold 137706Sarnold 147871Sarnold main(argc, argv) 157871Sarnold int argc; 167871Sarnold char *argv[]; 177706Sarnold { 187706Sarnold register char *p; 197706Sarnold BOOLEAN playing; 207706Sarnold char *s; /* for reading arguments */ 217706Sarnold char bust; /* flag for arg reader */ 227871Sarnold FILE *f; 237871Sarnold FILE *fopen(); 247871Sarnold char *getline(); 257871Sarnold int bye(); 267706Sarnold 277871Sarnold while (--argc > 0) { 287871Sarnold if ((*++argv)[0] != '-') { 297871Sarnold fprintf(stderr, "\n\ncribbage: usage is 'cribbage [-eqr]'\n"); 307871Sarnold exit(1); 317706Sarnold } 327706Sarnold bust = FALSE; 337871Sarnold for (s = argv[0] + 1; *s != NULL; s++) { 347871Sarnold switch (*s) { 357871Sarnold case 'e': 367706Sarnold explain = TRUE; 377706Sarnold break; 387871Sarnold case 'q': 397706Sarnold quiet = TRUE; 407706Sarnold break; 417871Sarnold case 'r': 427706Sarnold rflag = TRUE; 437706Sarnold break; 447706Sarnold default: 457871Sarnold fprintf(stderr, "\n\ncribbage: usage is 'cribbage [-eqr]'\n"); 467871Sarnold exit(2); 477706Sarnold break; 487706Sarnold } 497871Sarnold if (bust) 507871Sarnold break; 517706Sarnold } 527706Sarnold } 537871Sarnold 547871Sarnold initscr(); 557871Sarnold signal(SIGINT, bye); 567871Sarnold crmode(); 577871Sarnold noecho(); 5812315Sarnold Playwin = subwin(stdscr, PLAY_Y, PLAY_X, 0, 0); 5912315Sarnold Tablewin = subwin(stdscr, TABLE_Y, TABLE_X, 0, PLAY_X); 6012315Sarnold Compwin = subwin(stdscr, COMP_Y, COMP_X, 0, TABLE_X + PLAY_X); 6112315Sarnold Msgwin = subwin(stdscr, MSG_Y, MSG_X, Y_MSG_START, SCORE_X + 1); 627871Sarnold leaveok(Playwin, TRUE); 637871Sarnold leaveok(Tablewin, TRUE); 647871Sarnold leaveok(Compwin, TRUE); 6512162Sarnold clearok(stdscr, FALSE); 667871Sarnold 677871Sarnold if (!quiet) { 687871Sarnold msg("Do you need instructions for cribbage? "); 697871Sarnold if (getuchar() == 'Y') { 708071Sarnold endwin(); 718071Sarnold fflush(stdout); 727871Sarnold system(INSTRCMD); 738071Sarnold crmode(); 748071Sarnold noecho(); 758071Sarnold clear(); 768071Sarnold refresh(); 777871Sarnold msg("For the rules of this program, do \"man cribbage\""); 787706Sarnold } 797706Sarnold } 807706Sarnold playing = TRUE; 817871Sarnold do { 8212315Sarnold wclrtobot(Msgwin); 837871Sarnold msg(quiet ? "L or S? " : "Long (to 121) or Short (to 61)? "); 847949Sarnold if (glimit == SGAME) 857949Sarnold glimit = (getuchar() == 'L' ? LGAME : SGAME); 867949Sarnold else 877949Sarnold glimit = (getuchar() == 'S' ? SGAME : LGAME); 887706Sarnold game(); 897871Sarnold msg("Another game? "); 907871Sarnold playing = (getuchar() == 'Y'); 917871Sarnold } while (playing); 927871Sarnold 937871Sarnold if ((f = fopen(LOGFILE, "a")) != NULL) { 947871Sarnold fprintf(f, "Won %5.5d, Lost %5.5d\n", cgames, pgames); 957871Sarnold fclose(f); 967706Sarnold } 977871Sarnold 987871Sarnold bye(); 997706Sarnold } 1007706Sarnold 1017871Sarnold /* 1027871Sarnold * bye: 1037871Sarnold * Leave the program, cleaning things up as we go. 1047871Sarnold */ 1057871Sarnold bye() 1067871Sarnold { 1077871Sarnold signal(SIGINT, SIG_IGN); 1087871Sarnold mvcur(0, COLS - 1, LINES - 1, 0); 1097871Sarnold fflush(stdout); 1107871Sarnold endwin(); 1117871Sarnold putchar('\n'); 1127871Sarnold exit(1); 1137871Sarnold } 1147706Sarnold 1157871Sarnold /* 1167871Sarnold * makeboard: 1177871Sarnold * Print out the initial board on the screen 1187871Sarnold */ 1197871Sarnold makeboard() 1207871Sarnold { 1217871Sarnold mvaddstr(SCORE_Y + 0, SCORE_X, "+---------------------------------------+"); 12211397Sarnold mvaddstr(SCORE_Y + 1, SCORE_X, "| Score: 0 YOU |"); 1237937Sarnold mvaddstr(SCORE_Y + 2, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1247937Sarnold mvaddstr(SCORE_Y + 3, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1257871Sarnold mvaddstr(SCORE_Y + 4, SCORE_X, "| |"); 1267937Sarnold mvaddstr(SCORE_Y + 5, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1277937Sarnold mvaddstr(SCORE_Y + 6, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 12811397Sarnold mvaddstr(SCORE_Y + 7, SCORE_X, "| Score: 0 ME |"); 1297871Sarnold mvaddstr(SCORE_Y + 8, SCORE_X, "+---------------------------------------+"); 1307949Sarnold gamescore(); 1317949Sarnold } 1327949Sarnold 1337949Sarnold /* 1347949Sarnold * gamescore: 1357949Sarnold * Print out the current game score 1367949Sarnold */ 1377949Sarnold gamescore() 1387949Sarnold { 1397949Sarnold extern int Lastscore[]; 1407949Sarnold 1417948Sarnold if (pgames || cgames) { 1427948Sarnold mvprintw(SCORE_Y + 1, SCORE_X + 28, "Games: %3d", pgames); 1437948Sarnold mvprintw(SCORE_Y + 7, SCORE_X + 28, "Games: %3d", cgames); 1447948Sarnold } 1457937Sarnold Lastscore[0] = -1; 1467937Sarnold Lastscore[1] = -1; 1477871Sarnold } 1487871Sarnold 1497706Sarnold /* 1507871Sarnold * game: 1517933Sarnold * Play one game up to glimit points. Actually, we only ASK the 1527933Sarnold * player what card to turn. We do a random one, anyway. 1537706Sarnold */ 1547706Sarnold game() 1557706Sarnold { 1567871Sarnold register int i, j; 1577706Sarnold BOOLEAN flag; 1587706Sarnold BOOLEAN compcrib; 1597706Sarnold 1607949Sarnold makeboard(); 16112162Sarnold refresh(); 1627871Sarnold makedeck(deck); 1637871Sarnold shuffle(deck); 1647871Sarnold if (gamecount == 0) { 1657706Sarnold flag = TRUE; 1667871Sarnold do { 1677933Sarnold if (!rflag) { /* player cuts deck */ 1687871Sarnold msg(quiet ? "Cut for crib? " : 1697871Sarnold "Cut to see whose crib it is -- low card wins? "); 1707933Sarnold getline(); 1717706Sarnold } 1727933Sarnold i = (rand() >> 4) % CARDS; /* random cut */ 1737871Sarnold do { /* comp cuts deck */ 1747871Sarnold j = (rand() >> 4) % CARDS; 1757871Sarnold } while (j == i); 1767871Sarnold addmsg(quiet ? "You cut " : "You cut the "); 1777871Sarnold msgcard(deck[i], FALSE); 1787871Sarnold endmsg(); 1797871Sarnold addmsg(quiet ? "I cut " : "I cut the "); 1807871Sarnold msgcard(deck[j], FALSE); 1817871Sarnold endmsg(); 1827871Sarnold flag = (deck[i].rank == deck[j].rank); 1837871Sarnold if (flag) { 1847871Sarnold msg(quiet ? "We tied..." : 1857871Sarnold "We tied and have to try again..."); 1867871Sarnold shuffle(deck); 1877706Sarnold continue; 1887706Sarnold } 1897871Sarnold else 1907871Sarnold compcrib = (deck[i].rank > deck[j].rank); 1917871Sarnold } while (flag); 1927706Sarnold } 1937871Sarnold else { 1947949Sarnold werase(Tablewin); 1957949Sarnold wrefresh(Tablewin); 1967949Sarnold werase(Compwin); 1977949Sarnold wrefresh(Compwin); 19812315Sarnold msg("Loser (%s) gets first crib", (iwon ? "you" : "me")); 1997706Sarnold compcrib = !iwon; 2007706Sarnold } 2017871Sarnold 2027706Sarnold pscore = cscore = 0; 2037706Sarnold flag = TRUE; 2047871Sarnold do { 2057871Sarnold shuffle(deck); 2067871Sarnold flag = !playhand(compcrib); 2077706Sarnold compcrib = !compcrib; 2087871Sarnold } while (flag); 2097706Sarnold ++gamecount; 2107871Sarnold if (cscore < pscore) { 2117871Sarnold if (glimit - cscore > 60) { 2127871Sarnold msg("YOU DOUBLE SKUNKED ME!"); 2137871Sarnold pgames += 4; 2147706Sarnold } 2157871Sarnold else if (glimit - cscore > 30) { 2167871Sarnold msg("YOU SKUNKED ME!"); 2177871Sarnold pgames += 2; 2187871Sarnold } 2197871Sarnold else { 2207871Sarnold msg("YOU WON!"); 2217706Sarnold ++pgames; 2227706Sarnold } 2237706Sarnold iwon = FALSE; 2247706Sarnold } 2257871Sarnold else { 2267871Sarnold if (glimit - pscore > 60) { 2277871Sarnold msg("I DOUBLE SKUNKED YOU!"); 2287871Sarnold cgames += 4; 2297706Sarnold } 2307871Sarnold else if (glimit - pscore > 30) { 2317871Sarnold msg("I SKUNKED YOU!"); 2327871Sarnold cgames += 2; 2337871Sarnold } 2347871Sarnold else { 2357871Sarnold msg("I WON!"); 2367706Sarnold ++cgames; 2377706Sarnold } 2387706Sarnold iwon = TRUE; 2397706Sarnold } 2407949Sarnold gamescore(); 2417706Sarnold } 2427706Sarnold 2437706Sarnold /* 2447871Sarnold * playhand: 2457871Sarnold * Do up one hand of the game 2467706Sarnold */ 2477871Sarnold playhand(mycrib) 2487871Sarnold BOOLEAN mycrib; 2497871Sarnold { 2507871Sarnold register int deckpos; 2517871Sarnold extern char Msgbuf[]; 2527706Sarnold 2537871Sarnold werase(Compwin); 2547706Sarnold 2557706Sarnold knownum = 0; 2567871Sarnold deckpos = deal(mycrib); 2577871Sarnold sorthand(chand, FULLHAND); 2587871Sarnold sorthand(phand, FULLHAND); 2597871Sarnold makeknown(chand, FULLHAND); 2608073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 2617871Sarnold discard(mycrib); 2627871Sarnold if (cut(mycrib, deckpos)) 2637871Sarnold return TRUE; 2647871Sarnold if (peg(mycrib)) 2657871Sarnold return TRUE; 2667871Sarnold werase(Tablewin); 2677871Sarnold wrefresh(Tablewin); 2687871Sarnold if (score(mycrib)) 2697871Sarnold return TRUE; 2707871Sarnold return FALSE; 2717706Sarnold } 2727706Sarnold 2737706Sarnold 2747706Sarnold 2757706Sarnold /* 2767706Sarnold * deal cards to both players from deck 2777706Sarnold */ 2787706Sarnold 2797706Sarnold deal( mycrib ) 2807706Sarnold { 2817706Sarnold register int i, j; 2827706Sarnold 2837706Sarnold j = 0; 2847706Sarnold for( i = 0; i < FULLHAND; i++ ) { 2857706Sarnold if( mycrib ) { 2867706Sarnold phand[i] = deck[j++]; 2877706Sarnold chand[i] = deck[j++]; 2887706Sarnold } 2897706Sarnold else { 2907706Sarnold chand[i] = deck[j++]; 2917706Sarnold phand[i] = deck[j++]; 2927706Sarnold } 2937706Sarnold } 2947706Sarnold return( j ); 2957706Sarnold } 2967706Sarnold 2977706Sarnold /* 2987871Sarnold * discard: 2997871Sarnold * Handle players discarding into the crib... 3007871Sarnold * Note: we call cdiscard() after prining first message so player doesn't wait 3017706Sarnold */ 3027871Sarnold discard(mycrib) 3037871Sarnold BOOLEAN mycrib; 3047706Sarnold { 3057871Sarnold register char *prompt; 3067871Sarnold CARD crd; 3077706Sarnold 3087946Sarnold prcrib(mycrib, TRUE); 3097871Sarnold prompt = (quiet ? "Discard --> " : "Discard a card --> "); 3107871Sarnold cdiscard(mycrib); /* puts best discard at end */ 3117871Sarnold crd = phand[infrom(phand, FULLHAND, prompt)]; 3127871Sarnold remove(crd, phand, FULLHAND); 3138073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 3147706Sarnold crib[0] = crd; 3157871Sarnold /* next four lines same as last four except for cdiscard() */ 3167871Sarnold crd = phand[infrom(phand, FULLHAND - 1, prompt)]; 3177871Sarnold remove(crd, phand, FULLHAND - 1); 3188073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 3197706Sarnold crib[1] = crd; 3207706Sarnold crib[2] = chand[4]; 3217706Sarnold crib[3] = chand[5]; 3227871Sarnold chand[4].rank = chand[4].suit = chand[5].rank = chand[5].suit = EMPTY; 3237706Sarnold } 3247706Sarnold 3257706Sarnold /* 3267871Sarnold * cut: 3277933Sarnold * Cut the deck and set turnover. Actually, we only ASK the 3287933Sarnold * player what card to turn. We do a random one, anyway. 3297706Sarnold */ 3307871Sarnold cut(mycrib, pos) 3317871Sarnold BOOLEAN mycrib; 3327871Sarnold int pos; 3337706Sarnold { 3347871Sarnold register int i, cardx; 3357706Sarnold BOOLEAN win = FALSE; 3367706Sarnold 3377871Sarnold if (mycrib) { 3387933Sarnold if (!rflag) { /* random cut */ 3397871Sarnold msg(quiet ? "Cut the deck? " : 3407871Sarnold "How many cards down do you wish to cut the deck? "); 3417933Sarnold getline(); 3427706Sarnold } 3437933Sarnold i = (rand() >> 4) % (CARDS - pos); 3447706Sarnold turnover = deck[i + pos]; 3457871Sarnold addmsg(quiet ? "You cut " : "You cut the "); 3467871Sarnold msgcard(turnover, FALSE); 3477871Sarnold endmsg(); 3487871Sarnold if (turnover.rank == JACK) { 34912315Sarnold msg("I get two for his heels"); 3507871Sarnold win = chkscr(&cscore,2 ); 3517706Sarnold } 3527706Sarnold } 3537871Sarnold else { 3547871Sarnold i = (rand() >> 4) % (CARDS - pos) + pos; 3557706Sarnold turnover = deck[i]; 3567871Sarnold addmsg(quiet ? "I cut " : "I cut the "); 3577871Sarnold msgcard(turnover, FALSE); 3587871Sarnold endmsg(); 3597871Sarnold if (turnover.rank == JACK) { 36012315Sarnold msg("You get two for his heels"); 3617871Sarnold win = chkscr(&pscore, 2); 3627706Sarnold } 3637706Sarnold } 3647871Sarnold makeknown(&turnover, 1); 3657946Sarnold prcrib(mycrib, FALSE); 3667871Sarnold return win; 3677706Sarnold } 3687706Sarnold 3697706Sarnold /* 3707946Sarnold * prcrib: 3717946Sarnold * Print out the turnover card with crib indicator 3727946Sarnold */ 3737946Sarnold prcrib(mycrib, blank) 3747946Sarnold BOOLEAN mycrib, blank; 3757946Sarnold { 37612162Sarnold register int y, cardx; 3777946Sarnold 3787946Sarnold if (mycrib) 3797946Sarnold cardx = CRIB_X; 3807946Sarnold else 38112315Sarnold cardx = 0; 3827946Sarnold 3837946Sarnold mvaddstr(CRIB_Y, cardx + 1, "CRIB"); 3847946Sarnold prcard(stdscr, CRIB_Y + 1, cardx, turnover, blank); 38512162Sarnold 38612162Sarnold if (mycrib) 38712315Sarnold cardx = 0; 38812162Sarnold else 38912162Sarnold cardx = CRIB_X; 39012162Sarnold 39112162Sarnold for (y = CRIB_Y; y <= CRIB_Y + 5; y++) 39212162Sarnold mvaddstr(y, cardx, " "); 3937946Sarnold } 3947946Sarnold 3957946Sarnold /* 3967871Sarnold * peg: 3977871Sarnold * Handle all the pegging... 3987706Sarnold */ 3997706Sarnold 4007871Sarnold static CARD Table[14]; 4017706Sarnold 4027871Sarnold static int Tcnt; 4037871Sarnold 4047871Sarnold peg(mycrib) 4057871Sarnold BOOLEAN mycrib; 4067706Sarnold { 4077871Sarnold static CARD ch[CINHAND], ph[CINHAND]; 4087706Sarnold CARD crd; 4097871Sarnold register int i, j, k; 4108072Sarnold register int l; 4118072Sarnold register int cnum, pnum, sum; 4128072Sarnold register BOOLEAN myturn, mego, ugo, last, played; 4137706Sarnold 4147706Sarnold cnum = pnum = CINHAND; 4157871Sarnold for (i = 0; i < CINHAND; i++) { /* make copies of hands */ 4167706Sarnold ch[i] = chand[i]; 4177706Sarnold ph[i] = phand[i]; 4187706Sarnold } 4197871Sarnold Tcnt = 0; /* index to table of cards played */ 4207706Sarnold sum = 0; /* sum of cards played */ 4217706Sarnold mego = ugo = FALSE; 4227706Sarnold myturn = !mycrib; 4237871Sarnold for (;;) { 4247706Sarnold last = TRUE; /* enable last flag */ 4258073Sarnold prhand(ph, pnum, Playwin, FALSE); 4268073Sarnold prhand(ch, cnum, Compwin, TRUE); 4277871Sarnold prtable(sum); 4287871Sarnold if (myturn) { /* my tyrn to play */ 4297871Sarnold if (!anymove(ch, cnum, sum)) { /* if no card to play */ 4307871Sarnold if (!mego && cnum) { /* go for comp? */ 43112315Sarnold msg("GO"); 4327706Sarnold mego = TRUE; 4337706Sarnold } 4347871Sarnold if (anymove(ph, pnum, sum)) /* can player move? */ 4357706Sarnold myturn = !myturn; 4367871Sarnold else { /* give him his point */ 43712315Sarnold msg(quiet ? "You get one" : "You get one point"); 4387871Sarnold if (chkscr(&pscore, 1)) 4397871Sarnold return TRUE; 4407706Sarnold sum = 0; 4417706Sarnold mego = ugo = FALSE; 4427871Sarnold Tcnt = 0; 4437706Sarnold } 4447706Sarnold } 4457871Sarnold else { 4467706Sarnold played = TRUE; 4477706Sarnold j = -1; 4487706Sarnold k = 0; 4497871Sarnold for (i = 0; i < cnum; i++) { /* maximize score */ 4507871Sarnold l = pegscore(ch[i], Table, Tcnt, sum); 4517871Sarnold if (l > k) { 4527706Sarnold k = l; 4537706Sarnold j = i; 4547706Sarnold } 4557706Sarnold } 4567871Sarnold if (j < 0) /* if nothing scores */ 4577871Sarnold j = cchose(ch, cnum, sum); 4587706Sarnold crd = ch[j]; 4597871Sarnold remove(crd, ch, cnum--); 4607871Sarnold sum += VAL(crd.rank); 4617871Sarnold Table[Tcnt++] = crd; 4627871Sarnold if (k > 0) { 4637948Sarnold addmsg(quiet ? "I get %d playing " : 4647948Sarnold "I get %d points playing ", k); 4657871Sarnold msgcard(crd, FALSE); 4667871Sarnold endmsg(); 4677871Sarnold if (chkscr(&cscore, k)) 4687871Sarnold return TRUE; 4697706Sarnold } 4707706Sarnold myturn = !myturn; 4717706Sarnold } 4727706Sarnold } 4737871Sarnold else { 4747871Sarnold if (!anymove(ph, pnum, sum)) { /* can player move? */ 4757871Sarnold if (!ugo && pnum) { /* go for player */ 47612315Sarnold msg("You have a GO"); 4777706Sarnold ugo = TRUE; 4787706Sarnold } 4797871Sarnold if (anymove(ch, cnum, sum)) /* can computer play? */ 4807706Sarnold myturn = !myturn; 4817871Sarnold else { 48212315Sarnold msg(quiet ? "I get one" : "I get one point"); 48312315Sarnold do_wait(); 4847871Sarnold if (chkscr(&cscore, 1)) 4857871Sarnold return TRUE; 4867706Sarnold sum = 0; 4877706Sarnold mego = ugo = FALSE; 4887871Sarnold Tcnt = 0; 4897706Sarnold } 4907706Sarnold } 4917871Sarnold else { /* player plays */ 4927706Sarnold played = FALSE; 4937871Sarnold if (pnum == 1) { 4947706Sarnold crd = ph[0]; 4957871Sarnold msg("You play your last card"); 4967706Sarnold } 4977871Sarnold else 4987871Sarnold for (;;) { 4998073Sarnold prhand(ph, pnum, Playwin, FALSE); 5007871Sarnold crd = ph[infrom(ph, pnum, "Your play: ")]; 5017871Sarnold if (sum + VAL(crd.rank) <= 31) 5027706Sarnold break; 5037871Sarnold else 50412315Sarnold msg("Total > 31 -- try again"); 5057871Sarnold } 5067871Sarnold makeknown(&crd, 1); 5077871Sarnold remove(crd, ph, pnum--); 5087871Sarnold i = pegscore(crd, Table, Tcnt, sum); 5097871Sarnold sum += VAL(crd.rank); 5107871Sarnold Table[Tcnt++] = crd; 5117871Sarnold if (i > 0) { 5127871Sarnold msg(quiet ? "You got %d" : "You got %d points", i); 5137871Sarnold if (chkscr(&pscore, i)) 5147871Sarnold return TRUE; 5157706Sarnold } 5167706Sarnold myturn = !myturn; 5177706Sarnold } 5187706Sarnold } 5197871Sarnold if (sum >= 31) { 52012315Sarnold if (!myturn) 52112315Sarnold do_wait(); 5227706Sarnold sum = 0; 5237706Sarnold mego = ugo = FALSE; 5247871Sarnold Tcnt = 0; 5257706Sarnold last = FALSE; /* disable last flag */ 5267706Sarnold } 5277871Sarnold if (!pnum && !cnum) 5287871Sarnold break; /* both done */ 5297871Sarnold } 5308073Sarnold prhand(ph, pnum, Playwin, FALSE); 5318073Sarnold prhand(ch, cnum, Compwin, TRUE); 5328072Sarnold prtable(sum); 5337871Sarnold if (last) 5347871Sarnold if (played) { 5357871Sarnold msg(quiet ? "I get one for last" : "I get one point for last"); 53612315Sarnold do_wait(); 5377871Sarnold if (chkscr(&cscore, 1)) 5387871Sarnold return TRUE; 5397706Sarnold } 5407871Sarnold else { 5417871Sarnold msg(quiet ? "You get one for last" : 5427871Sarnold "You get one point for last"); 5437871Sarnold if (chkscr(&pscore, 1)) 5447871Sarnold return TRUE; 5457706Sarnold } 5467871Sarnold return FALSE; 5477706Sarnold } 5487706Sarnold 5497871Sarnold /* 5507871Sarnold * prtable: 5517871Sarnold * Print out the table with the current score 5527871Sarnold */ 5537871Sarnold prtable(score) 5547871Sarnold int score; 5557871Sarnold { 5568073Sarnold prhand(Table, Tcnt, Tablewin, FALSE); 5577871Sarnold mvwprintw(Tablewin, (Tcnt + 2) * 2, Tcnt + 1, "%2d", score); 5587871Sarnold wrefresh(Tablewin); 5597871Sarnold } 5607706Sarnold 5617706Sarnold /* 5627871Sarnold * score: 5637871Sarnold * Handle the scoring of the hands 5647706Sarnold */ 5657871Sarnold score(mycrib) 5667871Sarnold BOOLEAN mycrib; 5677706Sarnold { 5687871Sarnold sorthand(crib, CINHAND); 5697871Sarnold if (mycrib) { 5707871Sarnold if (plyrhand(phand, "hand")) 5717871Sarnold return TRUE; 5727871Sarnold if (comphand(chand, "hand")) 5737871Sarnold return TRUE; 57412315Sarnold do_wait(); 5757871Sarnold if (comphand(crib, "crib")) 5767871Sarnold return TRUE; 5777706Sarnold } 5787871Sarnold else { 5797871Sarnold if (comphand(chand, "hand")) 5807871Sarnold return TRUE; 5817871Sarnold if (plyrhand(phand, "hand")) 5827871Sarnold return TRUE; 5837871Sarnold if (plyrhand(crib, "crib")) 5847871Sarnold return TRUE; 5857706Sarnold } 5867871Sarnold return FALSE; 5877706Sarnold } 588