17871Sarnold # include <curses.h> 27871Sarnold # include <signal.h> 37871Sarnold # include "deck.h" 47871Sarnold # include "cribbage.h" 57871Sarnold # include "cribcur.h" 67706Sarnold 77706Sarnold 87871Sarnold # define LOGFILE "/usr/games/lib/criblog" 97871Sarnold # define INSTRCMD "ul /usr/games/lib/crib.instr | more -f" 107706Sarnold 117706Sarnold 127871Sarnold main(argc, argv) 137871Sarnold int argc; 147871Sarnold char *argv[]; 157706Sarnold { 167706Sarnold register char *p; 177706Sarnold BOOLEAN playing; 187706Sarnold char *s; /* for reading arguments */ 197706Sarnold char bust; /* flag for arg reader */ 207871Sarnold FILE *f; 217871Sarnold FILE *fopen(); 227871Sarnold char *getline(); 237871Sarnold int bye(); 247706Sarnold 257871Sarnold while (--argc > 0) { 267871Sarnold if ((*++argv)[0] != '-') { 277871Sarnold fprintf(stderr, "\n\ncribbage: usage is 'cribbage [-eqr]'\n"); 287871Sarnold exit(1); 297706Sarnold } 307706Sarnold bust = FALSE; 317871Sarnold for (s = argv[0] + 1; *s != NULL; s++) { 327871Sarnold switch (*s) { 337871Sarnold case 'e': 347706Sarnold explain = TRUE; 357706Sarnold break; 367871Sarnold case 'q': 377706Sarnold quiet = TRUE; 387706Sarnold break; 397871Sarnold case 'r': 407706Sarnold rflag = TRUE; 417706Sarnold break; 427706Sarnold default: 437871Sarnold fprintf(stderr, "\n\ncribbage: usage is 'cribbage [-eqr]'\n"); 447871Sarnold exit(2); 457706Sarnold break; 467706Sarnold } 477871Sarnold if (bust) 487871Sarnold break; 497706Sarnold } 507706Sarnold } 517871Sarnold 527871Sarnold initscr(); 537871Sarnold signal(SIGINT, bye); 547871Sarnold crmode(); 557871Sarnold noecho(); 56*12315Sarnold Playwin = subwin(stdscr, PLAY_Y, PLAY_X, 0, 0); 57*12315Sarnold Tablewin = subwin(stdscr, TABLE_Y, TABLE_X, 0, PLAY_X); 58*12315Sarnold Compwin = subwin(stdscr, COMP_Y, COMP_X, 0, TABLE_X + PLAY_X); 59*12315Sarnold Msgwin = subwin(stdscr, MSG_Y, MSG_X, Y_MSG_START, SCORE_X + 1); 607871Sarnold leaveok(Playwin, TRUE); 617871Sarnold leaveok(Tablewin, TRUE); 627871Sarnold leaveok(Compwin, TRUE); 6312162Sarnold clearok(stdscr, FALSE); 647871Sarnold 657871Sarnold if (!quiet) { 667871Sarnold msg("Do you need instructions for cribbage? "); 677871Sarnold if (getuchar() == 'Y') { 688071Sarnold endwin(); 698071Sarnold fflush(stdout); 707871Sarnold system(INSTRCMD); 718071Sarnold crmode(); 728071Sarnold noecho(); 738071Sarnold clear(); 748071Sarnold refresh(); 757871Sarnold msg("For the rules of this program, do \"man cribbage\""); 767706Sarnold } 777706Sarnold } 787706Sarnold playing = TRUE; 797871Sarnold do { 80*12315Sarnold wclrtobot(Msgwin); 817871Sarnold msg(quiet ? "L or S? " : "Long (to 121) or Short (to 61)? "); 827949Sarnold if (glimit == SGAME) 837949Sarnold glimit = (getuchar() == 'L' ? LGAME : SGAME); 847949Sarnold else 857949Sarnold glimit = (getuchar() == 'S' ? SGAME : LGAME); 867706Sarnold game(); 877871Sarnold msg("Another game? "); 887871Sarnold playing = (getuchar() == 'Y'); 897871Sarnold } while (playing); 907871Sarnold 917871Sarnold if ((f = fopen(LOGFILE, "a")) != NULL) { 927871Sarnold fprintf(f, "Won %5.5d, Lost %5.5d\n", cgames, pgames); 937871Sarnold fclose(f); 947706Sarnold } 957871Sarnold 967871Sarnold bye(); 977706Sarnold } 987706Sarnold 997871Sarnold /* 1007871Sarnold * bye: 1017871Sarnold * Leave the program, cleaning things up as we go. 1027871Sarnold */ 1037871Sarnold bye() 1047871Sarnold { 1057871Sarnold signal(SIGINT, SIG_IGN); 1067871Sarnold mvcur(0, COLS - 1, LINES - 1, 0); 1077871Sarnold fflush(stdout); 1087871Sarnold endwin(); 1097871Sarnold putchar('\n'); 1107871Sarnold exit(1); 1117871Sarnold } 1127706Sarnold 1137871Sarnold /* 1147871Sarnold * makeboard: 1157871Sarnold * Print out the initial board on the screen 1167871Sarnold */ 1177871Sarnold makeboard() 1187871Sarnold { 1197871Sarnold mvaddstr(SCORE_Y + 0, SCORE_X, "+---------------------------------------+"); 12011397Sarnold mvaddstr(SCORE_Y + 1, SCORE_X, "| Score: 0 YOU |"); 1217937Sarnold mvaddstr(SCORE_Y + 2, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1227937Sarnold mvaddstr(SCORE_Y + 3, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1237871Sarnold mvaddstr(SCORE_Y + 4, SCORE_X, "| |"); 1247937Sarnold mvaddstr(SCORE_Y + 5, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 1257937Sarnold mvaddstr(SCORE_Y + 6, SCORE_X, "| *.....:.....:.....:.....:.....:..... |"); 12611397Sarnold mvaddstr(SCORE_Y + 7, SCORE_X, "| Score: 0 ME |"); 1277871Sarnold mvaddstr(SCORE_Y + 8, SCORE_X, "+---------------------------------------+"); 1287949Sarnold gamescore(); 1297949Sarnold } 1307949Sarnold 1317949Sarnold /* 1327949Sarnold * gamescore: 1337949Sarnold * Print out the current game score 1347949Sarnold */ 1357949Sarnold gamescore() 1367949Sarnold { 1377949Sarnold extern int Lastscore[]; 1387949Sarnold 1397948Sarnold if (pgames || cgames) { 1407948Sarnold mvprintw(SCORE_Y + 1, SCORE_X + 28, "Games: %3d", pgames); 1417948Sarnold mvprintw(SCORE_Y + 7, SCORE_X + 28, "Games: %3d", cgames); 1427948Sarnold } 1437937Sarnold Lastscore[0] = -1; 1447937Sarnold Lastscore[1] = -1; 1457871Sarnold } 1467871Sarnold 1477706Sarnold /* 1487871Sarnold * game: 1497933Sarnold * Play one game up to glimit points. Actually, we only ASK the 1507933Sarnold * player what card to turn. We do a random one, anyway. 1517706Sarnold */ 1527706Sarnold game() 1537706Sarnold { 1547871Sarnold register int i, j; 1557706Sarnold BOOLEAN flag; 1567706Sarnold BOOLEAN compcrib; 1577706Sarnold 1587949Sarnold makeboard(); 15912162Sarnold refresh(); 1607871Sarnold makedeck(deck); 1617871Sarnold shuffle(deck); 1627871Sarnold if (gamecount == 0) { 1637706Sarnold flag = TRUE; 1647871Sarnold do { 1657933Sarnold if (!rflag) { /* player cuts deck */ 1667871Sarnold msg(quiet ? "Cut for crib? " : 1677871Sarnold "Cut to see whose crib it is -- low card wins? "); 1687933Sarnold getline(); 1697706Sarnold } 1707933Sarnold i = (rand() >> 4) % CARDS; /* random cut */ 1717871Sarnold do { /* comp cuts deck */ 1727871Sarnold j = (rand() >> 4) % CARDS; 1737871Sarnold } while (j == i); 1747871Sarnold addmsg(quiet ? "You cut " : "You cut the "); 1757871Sarnold msgcard(deck[i], FALSE); 1767871Sarnold endmsg(); 1777871Sarnold addmsg(quiet ? "I cut " : "I cut the "); 1787871Sarnold msgcard(deck[j], FALSE); 1797871Sarnold endmsg(); 1807871Sarnold flag = (deck[i].rank == deck[j].rank); 1817871Sarnold if (flag) { 1827871Sarnold msg(quiet ? "We tied..." : 1837871Sarnold "We tied and have to try again..."); 1847871Sarnold shuffle(deck); 1857706Sarnold continue; 1867706Sarnold } 1877871Sarnold else 1887871Sarnold compcrib = (deck[i].rank > deck[j].rank); 1897871Sarnold } while (flag); 1907706Sarnold } 1917871Sarnold else { 1927949Sarnold werase(Tablewin); 1937949Sarnold wrefresh(Tablewin); 1947949Sarnold werase(Compwin); 1957949Sarnold wrefresh(Compwin); 196*12315Sarnold msg("Loser (%s) gets first crib", (iwon ? "you" : "me")); 1977706Sarnold compcrib = !iwon; 1987706Sarnold } 1997871Sarnold 2007706Sarnold pscore = cscore = 0; 2017706Sarnold flag = TRUE; 2027871Sarnold do { 2037871Sarnold shuffle(deck); 2047871Sarnold flag = !playhand(compcrib); 2057706Sarnold compcrib = !compcrib; 2067871Sarnold } while (flag); 2077706Sarnold ++gamecount; 2087871Sarnold if (cscore < pscore) { 2097871Sarnold if (glimit - cscore > 60) { 2107871Sarnold msg("YOU DOUBLE SKUNKED ME!"); 2117871Sarnold pgames += 4; 2127706Sarnold } 2137871Sarnold else if (glimit - cscore > 30) { 2147871Sarnold msg("YOU SKUNKED ME!"); 2157871Sarnold pgames += 2; 2167871Sarnold } 2177871Sarnold else { 2187871Sarnold msg("YOU WON!"); 2197706Sarnold ++pgames; 2207706Sarnold } 2217706Sarnold iwon = FALSE; 2227706Sarnold } 2237871Sarnold else { 2247871Sarnold if (glimit - pscore > 60) { 2257871Sarnold msg("I DOUBLE SKUNKED YOU!"); 2267871Sarnold cgames += 4; 2277706Sarnold } 2287871Sarnold else if (glimit - pscore > 30) { 2297871Sarnold msg("I SKUNKED YOU!"); 2307871Sarnold cgames += 2; 2317871Sarnold } 2327871Sarnold else { 2337871Sarnold msg("I WON!"); 2347706Sarnold ++cgames; 2357706Sarnold } 2367706Sarnold iwon = TRUE; 2377706Sarnold } 2387949Sarnold gamescore(); 2397706Sarnold } 2407706Sarnold 2417706Sarnold /* 2427871Sarnold * playhand: 2437871Sarnold * Do up one hand of the game 2447706Sarnold */ 2457871Sarnold playhand(mycrib) 2467871Sarnold BOOLEAN mycrib; 2477871Sarnold { 2487871Sarnold register int deckpos; 2497871Sarnold extern char Msgbuf[]; 2507706Sarnold 2517871Sarnold werase(Compwin); 2527706Sarnold 2537706Sarnold knownum = 0; 2547871Sarnold deckpos = deal(mycrib); 2557871Sarnold sorthand(chand, FULLHAND); 2567871Sarnold sorthand(phand, FULLHAND); 2577871Sarnold makeknown(chand, FULLHAND); 2588073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 2597871Sarnold discard(mycrib); 2607871Sarnold if (cut(mycrib, deckpos)) 2617871Sarnold return TRUE; 2627871Sarnold if (peg(mycrib)) 2637871Sarnold return TRUE; 2647871Sarnold werase(Tablewin); 2657871Sarnold wrefresh(Tablewin); 2667871Sarnold if (score(mycrib)) 2677871Sarnold return TRUE; 2687871Sarnold return FALSE; 2697706Sarnold } 2707706Sarnold 2717706Sarnold 2727706Sarnold 2737706Sarnold /* 2747706Sarnold * deal cards to both players from deck 2757706Sarnold */ 2767706Sarnold 2777706Sarnold deal( mycrib ) 2787706Sarnold { 2797706Sarnold register int i, j; 2807706Sarnold 2817706Sarnold j = 0; 2827706Sarnold for( i = 0; i < FULLHAND; i++ ) { 2837706Sarnold if( mycrib ) { 2847706Sarnold phand[i] = deck[j++]; 2857706Sarnold chand[i] = deck[j++]; 2867706Sarnold } 2877706Sarnold else { 2887706Sarnold chand[i] = deck[j++]; 2897706Sarnold phand[i] = deck[j++]; 2907706Sarnold } 2917706Sarnold } 2927706Sarnold return( j ); 2937706Sarnold } 2947706Sarnold 2957706Sarnold /* 2967871Sarnold * discard: 2977871Sarnold * Handle players discarding into the crib... 2987871Sarnold * Note: we call cdiscard() after prining first message so player doesn't wait 2997706Sarnold */ 3007871Sarnold discard(mycrib) 3017871Sarnold BOOLEAN mycrib; 3027706Sarnold { 3037871Sarnold register char *prompt; 3047871Sarnold CARD crd; 3057706Sarnold 3067946Sarnold prcrib(mycrib, TRUE); 3077871Sarnold prompt = (quiet ? "Discard --> " : "Discard a card --> "); 3087871Sarnold cdiscard(mycrib); /* puts best discard at end */ 3097871Sarnold crd = phand[infrom(phand, FULLHAND, prompt)]; 3107871Sarnold remove(crd, phand, FULLHAND); 3118073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 3127706Sarnold crib[0] = crd; 3137871Sarnold /* next four lines same as last four except for cdiscard() */ 3147871Sarnold crd = phand[infrom(phand, FULLHAND - 1, prompt)]; 3157871Sarnold remove(crd, phand, FULLHAND - 1); 3168073Sarnold prhand(phand, FULLHAND, Playwin, FALSE); 3177706Sarnold crib[1] = crd; 3187706Sarnold crib[2] = chand[4]; 3197706Sarnold crib[3] = chand[5]; 3207871Sarnold chand[4].rank = chand[4].suit = chand[5].rank = chand[5].suit = EMPTY; 3217706Sarnold } 3227706Sarnold 3237706Sarnold /* 3247871Sarnold * cut: 3257933Sarnold * Cut the deck and set turnover. Actually, we only ASK the 3267933Sarnold * player what card to turn. We do a random one, anyway. 3277706Sarnold */ 3287871Sarnold cut(mycrib, pos) 3297871Sarnold BOOLEAN mycrib; 3307871Sarnold int pos; 3317706Sarnold { 3327871Sarnold register int i, cardx; 3337706Sarnold BOOLEAN win = FALSE; 3347706Sarnold 3357871Sarnold if (mycrib) { 3367933Sarnold if (!rflag) { /* random cut */ 3377871Sarnold msg(quiet ? "Cut the deck? " : 3387871Sarnold "How many cards down do you wish to cut the deck? "); 3397933Sarnold getline(); 3407706Sarnold } 3417933Sarnold i = (rand() >> 4) % (CARDS - pos); 3427706Sarnold turnover = deck[i + pos]; 3437871Sarnold addmsg(quiet ? "You cut " : "You cut the "); 3447871Sarnold msgcard(turnover, FALSE); 3457871Sarnold endmsg(); 3467871Sarnold if (turnover.rank == JACK) { 347*12315Sarnold msg("I get two for his heels"); 3487871Sarnold win = chkscr(&cscore,2 ); 3497706Sarnold } 3507706Sarnold } 3517871Sarnold else { 3527871Sarnold i = (rand() >> 4) % (CARDS - pos) + pos; 3537706Sarnold turnover = deck[i]; 3547871Sarnold addmsg(quiet ? "I cut " : "I cut the "); 3557871Sarnold msgcard(turnover, FALSE); 3567871Sarnold endmsg(); 3577871Sarnold if (turnover.rank == JACK) { 358*12315Sarnold msg("You get two for his heels"); 3597871Sarnold win = chkscr(&pscore, 2); 3607706Sarnold } 3617706Sarnold } 3627871Sarnold makeknown(&turnover, 1); 3637946Sarnold prcrib(mycrib, FALSE); 3647871Sarnold return win; 3657706Sarnold } 3667706Sarnold 3677706Sarnold /* 3687946Sarnold * prcrib: 3697946Sarnold * Print out the turnover card with crib indicator 3707946Sarnold */ 3717946Sarnold prcrib(mycrib, blank) 3727946Sarnold BOOLEAN mycrib, blank; 3737946Sarnold { 37412162Sarnold register int y, cardx; 3757946Sarnold 3767946Sarnold if (mycrib) 3777946Sarnold cardx = CRIB_X; 3787946Sarnold else 379*12315Sarnold cardx = 0; 3807946Sarnold 3817946Sarnold mvaddstr(CRIB_Y, cardx + 1, "CRIB"); 3827946Sarnold prcard(stdscr, CRIB_Y + 1, cardx, turnover, blank); 38312162Sarnold 38412162Sarnold if (mycrib) 385*12315Sarnold cardx = 0; 38612162Sarnold else 38712162Sarnold cardx = CRIB_X; 38812162Sarnold 38912162Sarnold for (y = CRIB_Y; y <= CRIB_Y + 5; y++) 39012162Sarnold mvaddstr(y, cardx, " "); 3917946Sarnold } 3927946Sarnold 3937946Sarnold /* 3947871Sarnold * peg: 3957871Sarnold * Handle all the pegging... 3967706Sarnold */ 3977706Sarnold 3987871Sarnold static CARD Table[14]; 3997706Sarnold 4007871Sarnold static int Tcnt; 4017871Sarnold 4027871Sarnold peg(mycrib) 4037871Sarnold BOOLEAN mycrib; 4047706Sarnold { 4057871Sarnold static CARD ch[CINHAND], ph[CINHAND]; 4067706Sarnold CARD crd; 4077871Sarnold register int i, j, k; 4088072Sarnold register int l; 4098072Sarnold register int cnum, pnum, sum; 4108072Sarnold register BOOLEAN myturn, mego, ugo, last, played; 4117706Sarnold 4127706Sarnold cnum = pnum = CINHAND; 4137871Sarnold for (i = 0; i < CINHAND; i++) { /* make copies of hands */ 4147706Sarnold ch[i] = chand[i]; 4157706Sarnold ph[i] = phand[i]; 4167706Sarnold } 4177871Sarnold Tcnt = 0; /* index to table of cards played */ 4187706Sarnold sum = 0; /* sum of cards played */ 4197706Sarnold mego = ugo = FALSE; 4207706Sarnold myturn = !mycrib; 4217871Sarnold for (;;) { 4227706Sarnold last = TRUE; /* enable last flag */ 4238073Sarnold prhand(ph, pnum, Playwin, FALSE); 4248073Sarnold prhand(ch, cnum, Compwin, TRUE); 4257871Sarnold prtable(sum); 4267871Sarnold if (myturn) { /* my tyrn to play */ 4277871Sarnold if (!anymove(ch, cnum, sum)) { /* if no card to play */ 4287871Sarnold if (!mego && cnum) { /* go for comp? */ 429*12315Sarnold msg("GO"); 4307706Sarnold mego = TRUE; 4317706Sarnold } 4327871Sarnold if (anymove(ph, pnum, sum)) /* can player move? */ 4337706Sarnold myturn = !myturn; 4347871Sarnold else { /* give him his point */ 435*12315Sarnold msg(quiet ? "You get one" : "You get one point"); 4367871Sarnold if (chkscr(&pscore, 1)) 4377871Sarnold return TRUE; 4387706Sarnold sum = 0; 4397706Sarnold mego = ugo = FALSE; 4407871Sarnold Tcnt = 0; 4417706Sarnold } 4427706Sarnold } 4437871Sarnold else { 4447706Sarnold played = TRUE; 4457706Sarnold j = -1; 4467706Sarnold k = 0; 4477871Sarnold for (i = 0; i < cnum; i++) { /* maximize score */ 4487871Sarnold l = pegscore(ch[i], Table, Tcnt, sum); 4497871Sarnold if (l > k) { 4507706Sarnold k = l; 4517706Sarnold j = i; 4527706Sarnold } 4537706Sarnold } 4547871Sarnold if (j < 0) /* if nothing scores */ 4557871Sarnold j = cchose(ch, cnum, sum); 4567706Sarnold crd = ch[j]; 4577871Sarnold remove(crd, ch, cnum--); 4587871Sarnold sum += VAL(crd.rank); 4597871Sarnold Table[Tcnt++] = crd; 4607871Sarnold if (k > 0) { 4617948Sarnold addmsg(quiet ? "I get %d playing " : 4627948Sarnold "I get %d points playing ", k); 4637871Sarnold msgcard(crd, FALSE); 4647871Sarnold endmsg(); 4657871Sarnold if (chkscr(&cscore, k)) 4667871Sarnold return TRUE; 4677706Sarnold } 4687706Sarnold myturn = !myturn; 4697706Sarnold } 4707706Sarnold } 4717871Sarnold else { 4727871Sarnold if (!anymove(ph, pnum, sum)) { /* can player move? */ 4737871Sarnold if (!ugo && pnum) { /* go for player */ 474*12315Sarnold msg("You have a GO"); 4757706Sarnold ugo = TRUE; 4767706Sarnold } 4777871Sarnold if (anymove(ch, cnum, sum)) /* can computer play? */ 4787706Sarnold myturn = !myturn; 4797871Sarnold else { 480*12315Sarnold msg(quiet ? "I get one" : "I get one point"); 481*12315Sarnold do_wait(); 4827871Sarnold if (chkscr(&cscore, 1)) 4837871Sarnold return TRUE; 4847706Sarnold sum = 0; 4857706Sarnold mego = ugo = FALSE; 4867871Sarnold Tcnt = 0; 4877706Sarnold } 4887706Sarnold } 4897871Sarnold else { /* player plays */ 4907706Sarnold played = FALSE; 4917871Sarnold if (pnum == 1) { 4927706Sarnold crd = ph[0]; 4937871Sarnold msg("You play your last card"); 4947706Sarnold } 4957871Sarnold else 4967871Sarnold for (;;) { 4978073Sarnold prhand(ph, pnum, Playwin, FALSE); 4987871Sarnold crd = ph[infrom(ph, pnum, "Your play: ")]; 4997871Sarnold if (sum + VAL(crd.rank) <= 31) 5007706Sarnold break; 5017871Sarnold else 502*12315Sarnold msg("Total > 31 -- try again"); 5037871Sarnold } 5047871Sarnold makeknown(&crd, 1); 5057871Sarnold remove(crd, ph, pnum--); 5067871Sarnold i = pegscore(crd, Table, Tcnt, sum); 5077871Sarnold sum += VAL(crd.rank); 5087871Sarnold Table[Tcnt++] = crd; 5097871Sarnold if (i > 0) { 5107871Sarnold msg(quiet ? "You got %d" : "You got %d points", i); 5117871Sarnold if (chkscr(&pscore, i)) 5127871Sarnold return TRUE; 5137706Sarnold } 5147706Sarnold myturn = !myturn; 5157706Sarnold } 5167706Sarnold } 5177871Sarnold if (sum >= 31) { 518*12315Sarnold if (!myturn) 519*12315Sarnold do_wait(); 5207706Sarnold sum = 0; 5217706Sarnold mego = ugo = FALSE; 5227871Sarnold Tcnt = 0; 5237706Sarnold last = FALSE; /* disable last flag */ 5247706Sarnold } 5257871Sarnold if (!pnum && !cnum) 5267871Sarnold break; /* both done */ 5277871Sarnold } 5288073Sarnold prhand(ph, pnum, Playwin, FALSE); 5298073Sarnold prhand(ch, cnum, Compwin, TRUE); 5308072Sarnold prtable(sum); 5317871Sarnold if (last) 5327871Sarnold if (played) { 5337871Sarnold msg(quiet ? "I get one for last" : "I get one point for last"); 534*12315Sarnold do_wait(); 5357871Sarnold if (chkscr(&cscore, 1)) 5367871Sarnold return TRUE; 5377706Sarnold } 5387871Sarnold else { 5397871Sarnold msg(quiet ? "You get one for last" : 5407871Sarnold "You get one point for last"); 5417871Sarnold if (chkscr(&pscore, 1)) 5427871Sarnold return TRUE; 5437706Sarnold } 5447871Sarnold return FALSE; 5457706Sarnold } 5467706Sarnold 5477871Sarnold /* 5487871Sarnold * prtable: 5497871Sarnold * Print out the table with the current score 5507871Sarnold */ 5517871Sarnold prtable(score) 5527871Sarnold int score; 5537871Sarnold { 5548073Sarnold prhand(Table, Tcnt, Tablewin, FALSE); 5557871Sarnold mvwprintw(Tablewin, (Tcnt + 2) * 2, Tcnt + 1, "%2d", score); 5567871Sarnold wrefresh(Tablewin); 5577871Sarnold } 5587706Sarnold 5597706Sarnold /* 5607871Sarnold * score: 5617871Sarnold * Handle the scoring of the hands 5627706Sarnold */ 5637871Sarnold score(mycrib) 5647871Sarnold BOOLEAN mycrib; 5657706Sarnold { 5667871Sarnold sorthand(crib, CINHAND); 5677871Sarnold if (mycrib) { 5687871Sarnold if (plyrhand(phand, "hand")) 5697871Sarnold return TRUE; 5707871Sarnold if (comphand(chand, "hand")) 5717871Sarnold return TRUE; 572*12315Sarnold do_wait(); 5737871Sarnold if (comphand(crib, "crib")) 5747871Sarnold return TRUE; 5757706Sarnold } 5767871Sarnold else { 5777871Sarnold if (comphand(chand, "hand")) 5787871Sarnold return TRUE; 5797871Sarnold if (plyrhand(phand, "hand")) 5807871Sarnold return TRUE; 5817871Sarnold if (plyrhand(crib, "crib")) 5827871Sarnold return TRUE; 5837706Sarnold } 5847871Sarnold return FALSE; 5857706Sarnold } 586