X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/5ff78ede5ea1a80c654d3f0684cd5f36d5253ae1..087b6e7b7c1861c118eb976452acc50a866f916f:/cribbage/support.c diff --git a/cribbage/support.c b/cribbage/support.c index a2064a21..a576aee0 100644 --- a/cribbage/support.c +++ b/cribbage/support.c @@ -1,4 +1,4 @@ -/* $NetBSD: support.c,v 1.3 1995/03/21 15:08:59 cgd Exp $ */ +/* $NetBSD: support.c,v 1.14 2009/08/12 05:48:04 dholland Exp $ */ /*- * Copyright (c) 1980, 1993 @@ -12,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -33,15 +29,17 @@ * SUCH DAMAGE. */ +#include #ifndef lint #if 0 static char sccsid[] = "@(#)support.c 8.1 (Berkeley) 5/31/93"; #else -static char rcsid[] = "$NetBSD: support.c,v 1.3 1995/03/21 15:08:59 cgd Exp $"; +__RCSID("$NetBSD: support.c,v 1.14 2009/08/12 05:48:04 dholland Exp $"); #endif #endif /* not lint */ #include +#include #include #include "deck.h" @@ -51,18 +49,20 @@ static char rcsid[] = "$NetBSD: support.c,v 1.3 1995/03/21 15:08:59 cgd Exp $"; #define NTV 10 /* number scores to test */ /* score to test reachability of, and order to test them in */ -int tv[NTV] = {8, 7, 9, 6, 11, 12, 13, 14, 10, 5}; +static const int tv[NTV] = {8, 7, 9, 6, 11, 12, 13, 14, 10, 5}; + +static int anysumto(const CARD[], int, int, int); +static void prpeg(int, int, BOOLEAN); +static int numofval(const CARD[], int, int); /* * computer chooses what to play in pegging... * only called if no playable card will score points */ int -cchose(h, n, s) - CARD h[]; - int n, s; +cchose(const CARD h[], int n, int s) { - register int i, j, l; + int i, j, l; if (n <= 1) return (0); @@ -119,6 +119,10 @@ cchose(h, n, s) break; } } + if (j < 0) { + printf("\ncchose: internal error %d %d\n", j, n); + exit(93); + } return (j); } @@ -127,16 +131,14 @@ cchose(h, n, s) * Evaluate and score a player hand or crib */ int -plyrhand(hand, s) - CARD hand[]; - char *s; +plyrhand(const CARD hand[], const char *s) { static char prompt[BUFSIZ]; - register int i, j; - register BOOLEAN win; + int i, j; + BOOLEAN win; prhand(hand, CINHAND, Playwin, FALSE); - (void) sprintf(prompt, "Your %s scores ", s); + (void) snprintf(prompt, sizeof(prompt), "Your %s scores ", s); i = scorehand(hand, turnover, CINHAND, strcmp(s, "crib") == 0, explain); if ((j = number(0, 29, prompt)) == 19) j = 0; @@ -151,7 +153,7 @@ plyrhand(hand, s) msg("You should have taken %d, not %d!", i, j); } if (explain) - msg("Explanation: %s", expl); + msg("Explanation: %s", explan); do_wait(); } else win = chkscr(&pscore, i); @@ -163,11 +165,9 @@ plyrhand(hand, s) * Handle scoring and displaying the computers hand */ int -comphand(h, s) - CARD h[]; - char *s; +comphand(const CARD h[], const char *s) { - register int j; + int j; j = scorehand(h, turnover, CINHAND, strcmp(s, "crib") == 0, FALSE); prhand(h, CINHAND, Compwin, FALSE); @@ -183,15 +183,14 @@ comphand(h, s) int Lastscore[2] = {-1, -1}; int -chkscr(scr, inc) - int *scr, inc; +chkscr(int *scr, int inc) { BOOLEAN myturn; myturn = (scr == &cscore); if (inc != 0) { - prpeg(Lastscore[myturn], '.', myturn); - Lastscore[myturn] = *scr; + prpeg(Lastscore[(int)myturn], '.', myturn); + Lastscore[(int)myturn] = *scr; *scr += inc; prpeg(*scr, PEG, myturn); refresh(); @@ -204,39 +203,36 @@ chkscr(scr, inc) * Put out the peg character on the score board and put the * score up on the board. */ -void -prpeg(score, peg, myturn) - register int score; - int peg; - BOOLEAN myturn; +static void +prpeg(int curscore, int pegc, BOOLEAN myturn) { - register int y, x; + int y, x; if (!myturn) y = SCORE_Y + 2; else y = SCORE_Y + 5; - if (score <= 0 || score >= glimit) { - if (peg == '.') - peg = ' '; - if (score == 0) + if (curscore <= 0 || curscore >= glimit) { + if (pegc == '.') + pegc = ' '; + if (curscore == 0) x = SCORE_X + 2; else { x = SCORE_X + 2; y++; } } else { - x = (score - 1) % 30; - if (score > 90 || (score > 30 && score <= 60)) { + x = (curscore - 1) % 30; + if (curscore > 90 || (curscore > 30 && curscore <= 60)) { y++; x = 29 - x; } x += x / 5; x += SCORE_X + 3; } - mvaddch(y, x, peg); - mvprintw(SCORE_Y + (myturn ? 7 : 1), SCORE_X + 10, "%3d", score); + mvaddch(y, x, pegc); + mvprintw(SCORE_Y + (myturn ? 7 : 1), SCORE_X + 10, "%3d", curscore); } /* @@ -244,11 +240,10 @@ prpeg(score, peg, myturn) * the crib and puts the best two cards at the end */ void -cdiscard(mycrib) - BOOLEAN mycrib; +cdiscard(BOOLEAN mycrib) { CARD d[CARDS], h[FULLHAND], cb[2]; - register int i, j, k; + int i, j, k; int nc, ns; long sums[15]; static int undo1[15] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4}; @@ -297,11 +292,9 @@ cdiscard(mycrib) * returns true if some card in hand can be played without exceeding 31 */ int -anymove(hand, n, sum) - CARD hand[]; - int n, sum; +anymove(const CARD hand[], int n, int sum) { - register int i, j; + int i, j; if (n < 1) return (FALSE); @@ -317,12 +310,10 @@ anymove(hand, n, sum) * anysumto returns the index (0 <= i < n) of the card in hand that brings * the s up to t, or -1 if there is none */ -int -anysumto(hand, n, s, t) - CARD hand[]; - int n, s, t; +static int +anysumto(const CARD hand[], int n, int s, int t) { - register int i; + int i; for (i = 0; i < n; i++) { if (s + VAL(hand[i].rank) == t) @@ -334,12 +325,10 @@ anysumto(hand, n, s, t) /* * return the number of cards in h having the given rank value */ -int -numofval(h, n, v) - CARD h[]; - int n, v; +static int +numofval(const CARD h[], int n, int v) { - register int i, j; + int i, j; j = 0; for (i = 0; i < n; i++) { @@ -353,11 +342,9 @@ numofval(h, n, v) * makeknown remembers all n cards in h for future recall */ void -makeknown(h, n) - CARD h[]; - int n; +makeknown(const CARD h[], int n) { - register int i; + int i; for (i = 0; i < n; i++) known[knownum++] = h[i];