DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦23a7fdc5c⟧ TextFile

    Length: 3337 (0xd09)
    Types: TextFile
    Names: »m.c.orig«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Wanderer/m.c.orig« 

TextFile

#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;

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;
	}
    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 | -m | -c | -s | -f ]\n",argv[0]);
	exit(1);
        }
    }
if(argc > 2)
    {
    fprintf(stderr,"Usage: %s [ -e | -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();

/* 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++;
        };

    printf("\n\n%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;
}