home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
001-099
/
ff019.lzh
/
BlackJack
/
ttymgr.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-04-08
|
3KB
|
117 lines
/* TTYMGR - tty (terminal) manager
*/
#include "local.h"
#include "bj.h"
#include "hndmgr.h"
#include "ttymgr.h"
#define NMSGS 4
#define LENMSG 15
static bool askedhit = NO;
static bool wanthit = NO;
static char qchar[NMSGS+1] = "dsih";
static char qmsg[NMSGS][LENMSG+1] =
{ "Double down",
"Split pair",
"Insurance",
"Hit",
};
static short nmsg[NMSGS] = {0};
/* query - get player's response for DBLDN, SPLIT, HIT
*/
short query()
{
short ask(), val();
short ret; /* return from ask() */
if (val(1, 0) == val(1, 1))
ret = ask("dsh");
else
ret = ask("dh");
askedhit = (ret != SPLIT);
wanthit = (ret == HIT);
if (wanthit)
ret = NONE;
return (ret);
}
/* takes - gets a YES or NO reply to question
*/
bool takes(s)
char s[];
{
short ask();
int strcmp();
if (askedhit && strcmp(s, "h") == 0) {
askedhit = NO;
return(wanthit);
}
return (ask(s) != NONE);
}
/* ask - gets a choice among alternatives
*/
static short ask(s)
char s[];
{
bool isbrief; /* is prompt brief? */
char ans[BUFSIZ]; /* player's reply line */
char c; /* player's one-char answer */
short i; /* index over chars of s */
short j; /* index over chars of qchar */
short slen; /* length of s */
static short msglim = 5; /* verbosity limit */
unsigned strscn(); /* gives the index of c in s */
int strlen();
void error();
isbrief = YES;
slen = strlen(s);
for (i = 0; i < slen; ++i) {
j = strscn(qchar, s[i]);
if (++nmsg[j] <= msglim)
isbrief = NO;
}
if (isbrief) {
for (i = 0; i < slen; ++i)
printf("%c?", s[i]);
printf("\n");
}
FOREVER {
if (!isbrief) {
printf("Type\n");
for (i = 0; i < slen; ++i)
printf("%c For %s\n", s[i], qmsg[strscn(qchar, s[i])]);
printf("RETURN for None\n");
}
if (getln(ans, BUFSIZ) == EOF)
error("Bye!", "");
c = tolower(ans[0]);
if (c == '\n')
return(NONE);
for (i = 0; i < slen; ++i)
if (s[i] == c)
return ((short)(1 + strscn(qchar, c)));
isbrief = NO;
}
}
/* strscn - return the index of c in string s
*/
unsigned strscn(s, c)
char s[]; /* string to be scanned */
char c; /* char to be matched */
{
register unsigned i;
for (i = 0; s[i] != c && s[i] != '\0'; ++i)
;
return(i);
}