1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#include "mille.h"
# ifdef attron
# include <term.h>
# define _tty cur_term->Nttyb
# endif attron
/*
* @(#)misc.c 1.3 (Berkeley) 7/2/83
*/
#define NUMSAFE 4
/* VARARGS1 */
error(str, arg)
char *str;
{
Error (str, arg);
Beep ();
update_ui ();
return FALSE;
}
check_ext(forcomp)
reg bool forcomp; {
if (End == 700)
if (Play == PLAYER) {
if (getyn("Extension? ")) {
extend:
if (!forcomp)
End = 1000;
return TRUE;
}
else {
done:
if (!forcomp)
Finished = TRUE;
return FALSE;
}
}
else {
reg PLAY *pp, *op;
reg int i, safe, miles;
pp = &Player[COMP];
op = &Player[PLAYER];
for (safe = 0, i = 0; i < NUMSAFE; i++)
if (pp->safety[i] != S_UNKNOWN)
safe++;
if (safe < 2)
goto done;
if (op->mileage == 0 || onecard(op)
|| (op->can_go && op->mileage >= 500))
goto done;
for (miles = 0, i = 0; i < NUMSAFE; i++)
if (op->safety[i] != S_PLAYED
&& pp->safety[i] == S_UNKNOWN)
miles++;
if (miles + safe == NUMSAFE)
goto extend;
for (miles = 0, i = 0; i < HAND_SZ; i++)
if ((safe = pp->hand[i]) <= C_200)
miles += Value[safe];
if (miles + (Topcard - Deck) * 3 > 1000)
goto extend;
goto done;
}
else
goto done;
}
/*
* Check to see if more games are desired. If not, and game
* came from a saved file, make sure that they don't want to restore
* it. Exit appropriately.
*/
check_more() {
FlushInput ();
On_exit = TRUE;
if (Player[PLAYER].total >= 5000 || Player[COMP].total >= 5000)
if (getyn("Another game? "))
return;
else {
/*
* must do accounting normally done in main()
*/
if (Player[PLAYER].total > Player[COMP].total)
Player[PLAYER].games++;
else if (Player[PLAYER].total < Player[COMP].total)
Player[COMP].games++;
Player[COMP].total = 0;
Player[PLAYER].total = 0;
}
else
if (getyn("Another hand? "))
return;
if (!Saved && getyn("Save game? "))
if (!save())
return;
die();
}
|