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 >
C/C++ Source or Header  |  1988-11-23  |  4KB  |  179 lines

  1. #include "wand_head.h"
  2.  
  3. extern char *playscreen();
  4.  
  5. extern int rscreen();
  6.  
  7. extern int savescore();
  8.  
  9. int debug_disp = 0;
  10. int no_passwords = 0;
  11. int maxscreens;
  12. char screen[NOOFROWS][ROWLEN+1];
  13. int edit_mode = 0;
  14. int saved_game = 0;
  15. char *edit_screen;
  16.  
  17. main(argc,argv)
  18. int  argc;
  19. char *argv[];
  20. {
  21. char (*frow)[ROWLEN+1] = screen;
  22. int num = 1,score = 0,bell = 0,maxmoves = 0,fp,x,y;
  23. char howdead[25],buffer[100],
  24.      *name,*keys,*dead,ch;
  25. char *malloc();
  26.  
  27. if(argc == 2)
  28.     {
  29.     if(!strcmp(argv[1], "-e"))
  30.     {
  31.     edit_mode = 1;
  32.     edit_screen = NULL;
  33.     }
  34.     else if(!strcmp(argv[1], "-m"))
  35.     {
  36.     erase_scores();
  37.     return 0;
  38.     }
  39.     else if(!strcmp(argv[1], "-c"))
  40.     {
  41.     /* show credits */
  42.     sprintf(buffer,"%s/credits",SCREENPATH);
  43.     if((fp = open(buffer,O_RDONLY)) == -1) {
  44.             printf(" Sorry - credits unavailable!\n");
  45.         exit(1);
  46.         }
  47.     while(read(fp,&ch,1) == 1)
  48.         printf("%c",ch);
  49.     printf("\n");
  50.     exit(0);
  51.         }
  52.     else if(!strcmp(argv[1], "-s"))
  53.     {
  54.         savescore("-",0,0,"-");
  55.         return 0;
  56.     }
  57.     else if(!strcmp(argv[1], "-f"))
  58.         {
  59.     debug_disp = 1;
  60.     }
  61.     else
  62.     {
  63.     fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
  64.     exit(1);
  65.         }
  66.     }
  67. if(argc > 2)
  68.     {
  69.     if(!strcmp(argv[1],"-e"))
  70.     {
  71.     edit_mode = 1;
  72.     edit_screen = argv[2];
  73.     }
  74.     else
  75.     {
  76.         fprintf(stderr,"Usage: %s [ -e [ file ] | -m | -c | -s | -f ]\n",argv[0]);
  77.         exit(1);
  78.     }
  79.     }
  80.  
  81. /* check for passwords - if file no_pws is in screen dir no pws! */
  82. sprintf(buffer,"%s/no_pws",SCREENPATH);
  83. if((fp = open(buffer,O_RDONLY)) != -1) {
  84.     close(fp);
  85.     no_passwords = 1;
  86. }
  87.  
  88. /* count available screens */
  89. for(maxscreens = 0;;maxscreens++) {
  90.     sprintf(buffer,"%s/screen.%d",SCREENPATH,(maxscreens+1));
  91.     if((fp = open(buffer, O_RDONLY)) == -1 )
  92.     break;
  93.     close(fp);
  94. }
  95.  
  96. if((name = (char *)getenv("NEWNAME")) == NULL)
  97.     if((name = (char *)getenv("NAME")) == NULL)
  98.         if((name = (char *)getenv("FULLNAME")) == NULL)
  99.             if((name = (char *)getenv("USER")) == NULL)
  100.         if((name = (char *)getenv("LOGNAME")) == NULL)
  101. #ifdef    ASKNAME    /* M001 */
  102.         {
  103.             name = malloc(80);
  104.             if (name == NULL) {
  105.             printf("malloc error\n");
  106.             exit(1);
  107.             }
  108.             printf("Name? "); fflush(stdout);
  109.             gets(name);
  110.             if (name[0] == '\0')
  111.                 name = "noname";
  112.         }
  113. #else
  114.                 name = "noname";
  115. #endif
  116.  
  117. if((keys = (char *)getenv("NEWKEYS")) == NULL)
  118.     {
  119.     keys = malloc(5);
  120.     strcpy(keys,"kjhl");
  121.     }
  122.  
  123. initscr();
  124. keypad(stdscr, TRUE);
  125.  
  126. /* MAIN PROGRAM HERE */
  127.  
  128. CBON; noecho();
  129.  
  130. if(!edit_mode) {
  131.     for (;;) {
  132.         if (rscreen(num,&maxmoves)) {
  133.         strcpy(howdead,"a non-existant screen");
  134.         break;
  135.         };
  136.         dead = playscreen(&num,&score,&bell,maxmoves,keys);
  137.         if ((dead != NULL) && (*dead == '~')) {
  138.         num = (int)(dead[1]) - 1;
  139.         dead = NULL;
  140.         }
  141.         if (dead != NULL)
  142.         {
  143.         strcpy(howdead,dead);
  144.             break;
  145.             }
  146.         num++;
  147.         };
  148.     echo();
  149.     CBOFF;
  150.     endwin();
  151.     printf("%s killed by %s with a score of %d on level %d.\n",name,howdead,score,num);
  152.     }
  153. else
  154.     {
  155.     if(rscreen(num,&maxmoves))
  156.     {
  157.     for(x=0;x<ROWLEN;x++)
  158.         for(y=0;y<NOOFROWS;y++)
  159.         screen[y][x] =  ' ';
  160.     }
  161.     editscreen(num,&score,&bell,maxmoves,keys);
  162.     }
  163. /* END OF MAIN PROGRAM */
  164.  
  165. /* SAVE ROUTINES FOR SCORES */
  166.  
  167. if(!edit_mode)
  168.     {
  169.     if((savescore(howdead,score,num,name) == 0)&&(score != 0))
  170.          printf("\nWARNING: %s error: score not saved!\n\n",argv[0]);
  171.     }
  172.  
  173. echo();
  174. CBOFF;
  175. /* endwin(); */
  176. printf("WANDERER (C)1988 S. Shipway\n");
  177. return 0;
  178. }
  179.