Got quiz to work on GNO

This commit is contained in:
Bobbi Webber-Manners 2020-01-31 16:01:26 -05:00
parent ec75640c20
commit 5ac09e1b7e
2 changed files with 24 additions and 22 deletions

View File

@ -52,7 +52,7 @@ dmake install
*Disclaimer / To Do* *Disclaimer / To Do*
`backgammon` and `quiz` do not work yet. `backgammon` does not work yet.
Very minimal testing has been performed. If you find bugs, please let me know! Very minimal testing has been performed. If you find bugs, please let me know!

View File

@ -20,7 +20,7 @@ FILE *input;
int nl = 0; int nl = 0;
int na = NA; int na = NA;
int inc; int inc;
int ptr = 0; int ptr = 0;
int nc = 0; int nc = 0;
char line[150]; char line[150];
char response[100]; char response[100];
@ -32,24 +32,24 @@ int disj(int s);
int eat(int s, char c); int eat(int s, char c);
int string(int s); int string(int s);
int fold(int c); int fold(int c);
int publish(char *t); void publish(char *t);
int pub1(int s); void pub1(int s);
int _segment(char *u, char *w[]); int _segment(char *u, char *w[]);
int perm(char *u[], int m, char *v[], int n, int p[]); int perm(char *u[], int m, char *v[], int n, int p[]);
int find(char *u[], int m); int find(char *u[], int m);
int readindex(void); void readindex(void);
int talloc(void); void talloc(void);
int badinfo(void); void badinfo(void);
int next(void); int next(void);
void done(int, int); void done(int, int);
int instruct(char *info); void instruct(char *info);
int dunno(void); void dunno(void);
int query(char *r); int query(char *r);
int readline(void) int readline(void)
{ {
char *t; char *t;
register c; register int c;
loop: loop:
for (t=line; c=getc(input), *t=c, c!=EOF; t++) { for (t=line; c=getc(input), *t=c, c!=EOF; t++) {
nc++; nc++;
@ -103,7 +103,7 @@ int disj(int s)
case 0: case 0:
case ']': case ']':
case '}': case '}':
return(t|x&s); return(t|(x&s));
case '|': case '|':
ev++; ev++;
t |= s; t |= s;
@ -194,13 +194,13 @@ int fold(int c)
return(c|040); return(c|040);
} }
int publish(char *t) void publish(char *t)
{ {
ev = t; ev = t;
pub1(1); pub1(1);
} }
int pub1(int s) void pub1(int s)
{ {
for(;;ev++){ for(;;ev++){
switch(*ev) { switch(*ev) {
@ -287,7 +287,7 @@ int find(char *u[], int m)
return(0); return(0);
} }
int readindex(void) void readindex(void)
{ {
xx[0] = nc = 0; xx[0] = nc = 0;
while(readline()) { while(readline()) {
@ -300,7 +300,7 @@ int readindex(void)
} }
} }
int talloc(void) void talloc(void)
{ {
int i; int i;
for(i=0;i<NF;i++) for(i=0;i<NF;i++)
@ -309,7 +309,7 @@ int talloc(void)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
register j; register int j;
int i; int i;
int x; int x;
int z; int z;
@ -318,7 +318,7 @@ int main(int argc, char *argv[])
int count; int count;
info = "/usr/local/games/quiz.k/index"; info = "/usr/local/games/quiz.k/index";
time(&tm); time(&tm);
inc = (int)tm&077774|01; inc = (int)((tm&077774)|01);
loop: loop:
if(argc>1&&*argv[1]=='-') { if(argc>1&&*argv[1]=='-') {
switch(argv[1][1]) { switch(argv[1][1]) {
@ -393,15 +393,17 @@ loop:
} }
} }
#define STDIN 1 /* For GNO */
int query(char *r) int query(char *r)
{ {
char *t; char *t;
for(t=r;;t++) { for(t=r;;t++) {
if(read(0,t,1)==0) if(read(STDIN,t,1)==0)
done(0,0); done(0,0);
if(*t==' '&&(t==r||t[-1]==' ')) if(*t==' '&&(t==r||t[-1]==' '))
t--; t--;
if(*t=='\n') { if(*t=='\n' || *t=='\r') {
while(t>r&&t[-1]==' ') while(t>r&&t[-1]==' ')
*--t = '\n'; *--t = '\n';
break; break;
@ -434,7 +436,7 @@ void done(int x, int y)
printf("score %d%%\n",100*rights/(rights+wrongs)); printf("score %d%%\n",100*rights/(rights+wrongs));
exit(0); exit(0);
} }
int instruct(char *info) void instruct(char *info)
{ {
int i, n; int i, n;
printf("Subjects:\n\n"); printf("Subjects:\n\n");
@ -471,11 +473,11 @@ int instruct(char *info)
exit(0); exit(0);
} }
int badinfo(void){ void badinfo(void){
printf("Bad info %s\n",line); printf("Bad info %s\n",line);
} }
int dunno(void) void dunno(void)
{ {
printf("I don't know about that\n"); printf("I don't know about that\n");
exit(0); exit(0);