|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 3337 (0xd09) Types: TextFile Names: »m.c.orig«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Wanderer/m.c.orig«
#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; }