home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
TOP
/
USR
/
SRC
/
wanderer2.t.Z
/
wanderer2.t
/
m.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-11-23
|
4KB
|
179 lines
#include "wand_head.h"
extern char *playscreen();
extern int rscreen();
extern int savescore();
int debug_disp = 0;
int no_passwords = 0;
int maxscreens;
char screen[NOOFROWS][ROWLEN+1];
int edit_mode = 0;
int saved_game = 0;
char *edit_screen;
main(argc,argv)
int argc;
char *argv[];
{
char (*frow)[ROWLEN+1] = screen;
int num = 1,score = 0,bell = 0,maxmoves = 0,fp,x,y;
char howdead[25],buffer[100],
*name,*keys,*dead,ch;
char *malloc();
if(argc == 2)
{
if(!strcmp(argv[1], "-e"))
{
edit_mode = 1;
edit_screen = NULL;
}
else if(!strcmp(argv[1], "-m"))
{
erase_scores();
return 0;
}
else if(!strcmp(argv[1], "-c"))
{
/* show credits */
sprintf(buffer,"%s/credits",SCREENPATH);
if((fp = open(buffer,O_RDONLY)) == -1) {
printf(" Sorry - credits unavailable!\n");
exit(1);
}
while(read(fp,&ch,1) == 1)
printf("%c",ch);
printf("\n");
exit(0);
}
else if(!strcmp(argv[1], "-s"))
{
savescore("-",0,0,"-");
return 0;
}
else if(!strcmp(argv[1], "-f"))
{
debug_disp = 1;
}
else
{
fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
exit(1);
}
}
if(argc > 2)
{
if(!strcmp(argv[1],"-e"))
{
edit_mode = 1;
edit_screen = argv[2];
}
else
{
fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
exit(1);
}
}
/* check for passwords - if file no_pws is in screen dir no pws! */
sprintf(buffer,"%s/no_pws",SCREENPATH);
if((fp = open(buffer,O_RDONLY)) != -1) {
close(fp);
no_passwords = 1;
}
/* count available screens */
for(maxscreens = 0;;maxscreens++) {
sprintf(buffer,"%s/screen.%d",SCREENPATH,(maxscreens+1));
if((fp = open(buffer, O_RDONLY)) == -1 )
break;
close(fp);
}
if((name = (char *)getenv("NEWNAME")) == NULL)
if((name = (char *)getenv("NAME")) == NULL)
if((name = (char *)getenv("FULLNAME")) == NULL)
if((name = (char *)getenv("USER")) == NULL)
if((name = (char *)getenv("LOGNAME")) == NULL)
#ifdef ASKNAME /* M001 */
{
name = malloc(80);
if (name == NULL) {
printf("malloc error\n");
exit(1);
}
printf("Name? "); fflush(stdout);
gets(name);
if (name[0] == '\0')
name = "noname";
}
#else
name = "noname";
#endif
if((keys = (char *)getenv("NEWKEYS")) == NULL)
{
keys = malloc(5);
strcpy(keys,"kjhl");
}
initscr();
keypad(stdscr, TRUE);
/* MAIN PROGRAM HERE */
CBON; noecho();
if(!edit_mode) {
for (;;) {
if (rscreen(num,&maxmoves)) {
strcpy(howdead,"a non-existant screen");
break;
};
dead = playscreen(&num,&score,&bell,maxmoves,keys);
if ((dead != NULL) && (*dead == '~')) {
num = (int)(dead[1]) - 1;
dead = NULL;
}
if (dead != NULL)
{
strcpy(howdead,dead);
break;
}
num++;
};
echo();
CBOFF;
endwin();
printf("%s killed by %s with a score of %d on level %d.\n",name,howdead,score,num);
}
else
{
if(rscreen(num,&maxmoves))
{
for(x=0;x<ROWLEN;x++)
for(y=0;y<NOOFROWS;y++)
screen[y][x] = ' ';
}
editscreen(num,&score,&bell,maxmoves,keys);
}
/* END OF MAIN PROGRAM */
/* SAVE ROUTINES FOR SCORES */
if(!edit_mode)
{
if((savescore(howdead,score,num,name) == 0)&&(score != 0))
printf("\nWARNING: %s error: score not saved!\n\n",argv[0]);
}
echo();
CBOFF;
/* endwin(); */
printf("WANDERER (C)1988 S. Shipway\n");
return 0;
}