#include <dos.h>\r
#endif\r
#include <time.h>\r
- \r
-int getch(void);\r
\r
+#ifndef SSTDOC\r
+#define SSTDOC "sst.doc"\r
+#endif\r
+ \r
static char line[128], *linep = line;\r
static int linecount; /* for paging */\r
+static int screenheight = 24;\r
\r
static void clearscreen(void);\r
\r
2. deathray improvement (but keeping original failure alternatives)\r
\r
3. Tholian Web\r
-\r
+s\r
4. Enemies can ram the Enterprise. Regular Klingons and Romulans can\r
move in Expert and Emeritus games. This code could use improvement.\r
\r
cmdbuf[j] = toupper(commands[i][j]);\r
cmdbuf[j] = '\0';\r
}\r
- fp = fopen("sst.doc", "r");\r
+ fp = fopen(SSTDOC, "r");\r
if (fp == NULL) {\r
prout("Spock- \"Captain, that information is missing from the");\r
prout(" computer. You need to find SST.DOC and put it in the");\r
while (fgets(linebuf, sizeof(linebuf),fp)) {\r
if (strstr(linebuf, "******"))\r
break;\r
- linebuf[strlen(linebuf)-1] = '\0'; // No \n at end\r
- prout(linebuf);\r
+ proutc(linebuf);\r
}\r
fclose(fp);\r
}\r
int hitme;\r
char ch;\r
prelim();\r
+ char *LINES = getenv("LINES");\r
+ \r
+ if (LINES)\r
+ screenheight = atoi(LINES);\r
\r
+ line[0] = '\0';\r
if (argc > 1) {\r
- fromcommandline = 1;\r
- line[0] = '\0';\r
while (--argc > 0) {\r
strcat(line, *(++argv));\r
strcat(line, " ");\r
}\r
}\r
- else fromcommandline = 0;\r
-\r
\r
while (TRUE) { /* Play a game */\r
- setup();\r
+ setup(line[0] == '\0');\r
if (alldone) {\r
score();\r
alldone = 0;\r
void crmena(int i, int enemy, int key, int x, int y) {\r
if (i == 1) proutn("***");\r
cramen(enemy);\r
- proutn(" at");\r
+ proutn(" at ");\r
proutn(cramlc(key, x, y));\r
}\r
\r
extern void clrscr(void);\r
clrscr();\r
#else\r
- proutn("\033[2J"); /* Hope for an ANSI display */\r
+ // proutn("\033[2J"); /* Hope for an ANSI display */\r
+ /* much more in that old-time TTY spirit to just throw linefeeds */\r
+ int i;\r
+ for (i = 0; i < screenheight; i++)\r
+ putchar('\n');\r
#endif\r
}\r
\r
/* We will pull these out in case we want to do something special later */\r
\r
void pause(int i) {\r
+ char buf[BUFSIZ];\r
putchar('\n');\r
if (i==1) {\r
if (skill > 2)\r
prout("[ANOUNCEMENT ARRIVING...]");\r
else\r
- prout("[IMPORTANT ANNOUNCEMENT ARRIVING -- HIT SPACE BAR TO CONTINUE]");\r
- getch();\r
+ prout("[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]");\r
}\r
else {\r
- if (skill > 2)\r
- proutn("[CONTINUE?]");\r
- else\r
- proutn("[HIT SPACE BAR TO CONTINUE]");\r
- getch();\r
- proutn("\r \r");\r
+ if (skill > 2)\r
+ proutn("[CONTINUE?]");\r
+ else\r
+ proutn("[PRESS ENTER TO CONTINUE]");\r
+\r
}\r
+ fgets(buf, sizeof(buf), stdin);\r
if (i != 0) {\r
clearscreen();\r
}\r
void skip(int i) {\r
while (i-- > 0) {\r
linecount++;\r
- if (linecount >= 23)\r
+ if (linecount >= screenheight)\r
pause(0);\r
else\r
putchar('\n');\r
skip(1);\r
}\r
\r
+void proutc(char *line) {\r
+ line[strlen(line)-1] = '\0';\r
+ fputs(line, stdout);\r
+ skip(1);\r
+}\r
+\r
void prouts(char *fmt, ...) {\r
clock_t endTime;\r
char *s, buf[BUFSIZ];\r