|
|
researchv10 Norman
# include "trek.h"
/**
** instruction read and main play loop
**/
CVNTAB Comtab[]
{
"!", "shell",
"m", "ove",
"ram", "",
"q", "uery",
"st", "atus",
"sh", "ield",
"s", "rscan",
"l", "rscan",
"da", "mages",
"p", "hasers",
"quit", "",
"t", "orpedo",
"cl", "oak",
"c", "omputer",
"w", "arp",
"r", "est",
"do", "ck",
"i", "mpulse",
"u", "ndock",
"help", "",
"v", "isual",
"destruct", "",
"abandon", "",
"dump", "",
"events", "",
0
};
extern int shell();
extern int move();
extern int ram();
extern int info();
extern int status();
extern int shield();
extern int srscan();
extern int lrscan();
extern int dcrept();
extern int phaser();
extern int reset();
extern int torped();
extern int cloak();
extern int computer();
extern int setwarp();
extern int rest();
extern int dock();
extern int impulse();
extern int undock();
extern int help();
extern int visual();
extern int destruct();
extern int abandon();
extern int dumpgame();
extern int eventpr();
int (*comfn[])()
{
&shell,
&move,
&ram,
&info,
&status,
&shield,
&srscan,
&lrscan,
&dcrept,
&phaser,
&reset,
&torped,
&cloak,
&computer,
&setwarp,
&rest,
&dock,
&impulse,
&undock,
&help,
&visual,
&destruct,
&abandon,
&dumpgame,
&eventpr
};
reset()
{
longjmp(errjmp);
}
play()
{
register int r;
while (1)
{
Move.free = 1;
Move.delta = 0.0;
Move.shldchg = 0;
Move.newquad = 0;
Move.resting = 0;
if(chkbad() < 0)
return(0);
if((r=getcodpar("Command", Comtab))<0)
continue;
(*comfn[r])();
if(chkbad())
continue;
events();
attack(0);
checkcond();
}
}
char eof;
chkbad()
{
if(eof)
return(-1);
if(mkfault) {
flushin();
mkfault=0;
printf("@\n");
return(1);
}
return(0);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.