-/* $NetBSD: comp.c,v 1.4 1995/03/24 05:01:11 cgd Exp $ */
+/* $NetBSD: comp.c,v 1.14 2019/02/04 03:29:41 mrg Exp $ */
/*
* Copyright (c) 1982, 1993
* 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.
*
* SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)comp.c 8.1 (Berkeley) 5/31/93";
#else
-static char rcsid[] = "$NetBSD: comp.c,v 1.4 1995/03/24 05:01:11 cgd Exp $";
+__RCSID("$NetBSD: comp.c,v 1.14 2019/02/04 03:29:41 mrg Exp $");
#endif
#endif /* not lint */
-# include "mille.h"
+#include "mille.h"
/*
* @(#)comp.c 1.1 (Berkeley) 4/1/82
*/
-# define V_VALUABLE 40
+#define V_VALUABLE 40
-calcmove()
+void
+calcmove(void)
{
- register CARD card;
- register int *value;
- register PLAY *pp, *op;
- register bool foundend, cango, canstop, foundlow;
- register unsgn int i, count200, badcount, nummin, nummax, diff;
- register int curmin, curmax;
- register CARD safe, oppos;
- int valbuf[HAND_SZ], count[NUM_CARDS];
- bool playit[HAND_SZ];
+ CARD card;
+ int *value;
+ PLAY *pp, *op;
+ bool foundend, canstop, foundlow;
+ int cango;
+ unsigned int i, count200, badcount, nummin, nummax, diff;
+ int curmin, curmax;
+ CARD safe, oppos;
+ int valbuf[HAND_SZ], count[NUM_CARDS];
+ bool playit[HAND_SZ];
wmove(Score, ERR_Y, ERR_X); /* get rid of error messages */
wclrtoeol(Score);
switch (card) {
case C_STOP: case C_CRASH:
case C_FLAT: case C_EMPTY:
- if (playit[i] = canplay(pp, op, card))
+ if ((playit[i] = canplay(pp, op, card)) != 0)
canstop = TRUE;
goto norm;
case C_LIMIT:
if (foundend)
foundend = !check_ext(TRUE);
for (i = 0; safe && i < HAND_SZ; i++) {
- if (issafety(pp->hand[i])) {
+ if (is_safety(pp->hand[i])) {
if (onecard(op) || (foundend && cango && !canstop)) {
#ifdef DEBUG
if (Debug)
playit[i] = cango;
}
}
- if (!pp->can_go && !isrepair(pp->battle))
+ if (!pp->can_go && !is_repair(pp->battle))
Numneed[opposite(pp->battle)]++;
redoit:
foundlow = (cango || count[C_END_LIMIT] != 0
value = valbuf;
for (i = 0; i < HAND_SZ; i++) {
card = pp->hand[i];
- if (issafety(card) || playit[i] == (cango != 0)) {
+ if (is_safety(card) || playit[i] == (cango != 0)) {
#ifdef DEBUG
if (Debug)
fprintf(outf, "CALCMOVE: switch(\"%s\")\n",
diff = End - pp->mileage;
/* avoid getting too close */
if (Topcard > Deck && cango && diff <= 100
- && diff / Value[card] > count[card]
+ && (int)diff / Value[card] > count[card]
&& (card == C_25 || diff % 50 == 0)) {
if (card == C_50 && diff - 50 == 25
&& count[C_25] > 0)
*value = 0;
break;
}
+ /* FALLTHROUGH */
case C_75: case C_100:
*value = (Value[card] >> 3);
if (pp->speed == C_LIMIT)
*value /= ++badcount;
if (op->mileage == 0)
*value += 5;
- if ((card == C_LIMIT &&
- op->speed == C_LIMIT) ||
- !op->can_go)
+ if (op->speed == C_LIMIT || !op->can_go)
*value -= 5;
if (cango && pp->safety[S_RIGHT_WAY] !=
S_UNKNOWN)
#endif
value++;
}
- if (!pp->can_go && !isrepair(pp->battle))
+ if (!pp->can_go && !is_repair(pp->battle))
Numneed[opposite(pp->battle)]++;
if (cango) {
play_it:
Card_no = nummax;
}
else {
- if (issafety(pp->hand[nummin])) { /* NEVER discard a safety */
+ if (is_safety(pp->hand[nummin])) { /* NEVER discard a safety */
nummax = nummin;
goto play_it;
}
/*
* Return true if the given player could conceivably win with his next card.
*/
-onecard(pp)
-register PLAY *pp;
+int
+onecard(const PLAY *pp)
{
- register CARD bat, spd, card;
+ CARD bat, spd, card;
bat = pp->battle;
spd = pp->speed;
card = -1;
- if (pp->can_go || ((isrepair(bat) || bat == C_STOP || spd == C_LIMIT) &&
+ if (pp->can_go || ((is_repair(bat) || bat == C_STOP || spd == C_LIMIT) &&
Numseen[S_RIGHT_WAY] != 0) ||
- bat >= 0 && Numseen[safety(bat)] != 0)
+ (bat >= 0 && Numseen[safety(bat)] != 0))
switch (End - pp->mileage) {
case 200:
if (pp->nummiles[C_200] == 2)
card = (End - pp->mileage == 75 ? C_75 : C_100);
if (spd == C_LIMIT)
return Numseen[S_RIGHT_WAY] == 0;
+ /* FALLTHROUGH */
case 50:
case 25:
if (card == -1)
return FALSE;
}
-canplay(pp, op, card)
-register PLAY *pp, *op;
-register CARD card;
+int
+canplay(const PLAY *pp, const PLAY *op, CARD card)
{
switch (card) {
case C_200:
break;
case C_GO:
if (!pp->can_go &&
- (isrepair(pp->battle) || pp->battle == C_STOP))
+ (is_repair(pp->battle) || pp->battle == C_STOP))
return TRUE;
break;
case C_END_LIMIT: