home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3203 / getargs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-18  |  2.9 KB  |  148 lines

  1. /*
  2. ** getargs.c  Copyright 1991 Kent Paul Dolan,
  3. **            Mountain View, CA, USA 94039-0755
  4. **
  5. ** Written to satisfy an inquiry on USENet's rec.games.programmer newsgroup.
  6. ** May be freely used or modified in any non-commercial work.  Copyrighted
  7. ** only to prevent patenting by someone else.
  8. */
  9.  
  10.  
  11. #include <stdio.h>
  12. #include "townmaze.h"
  13. #include "townproto.h"
  14.  
  15.  
  16. #ifdef __STDC__
  17. void getargs(int argc,char *argv[])
  18. #else
  19. int getargs(argc,argv)
  20.   int argc;
  21.   char *argv[];
  22. #endif
  23. {
  24.   int i;
  25.  
  26. #if PROGRESS
  27.   fprintf(stderr,"Get arguments ");
  28. #endif
  29.  
  30.   if (argc > 1)
  31.   {
  32.     if ((argc%2) != 1)
  33.     {
  34.       usage();
  35.       exit(1);
  36.     }
  37.     i = 1;
  38.     while (i < argc)
  39.     {
  40.       if ((*argv[i]) != '-')
  41.       {
  42.         usage();
  43.         exit(1);
  44.       }
  45.       switch (*(argv[i]+1))
  46.       {
  47.       case 'h':
  48.         if (sscanf(argv[i+1],"%d",&mazeheight) == EOF)
  49.         {
  50.           usage();
  51.           exit(1);
  52.         }
  53.         break;
  54.  
  55.       case 'w':
  56.         if (sscanf(argv[i+1],"%d",&mazewidth) == EOF)
  57.         {
  58.           usage();
  59.           exit(1);
  60.         }
  61.         break;
  62.  
  63.       case 'r':
  64.         if (sscanf(argv[i+1],"%ld",&randomseed) == EOF)
  65.         {
  66.           usage();
  67.           exit(1);
  68.         }
  69.         SEEDRANDOM(randomseed); /* override clock seed in main() */
  70.         break;
  71.  
  72.       case 'g':
  73.         if (sscanf(argv[i+1],"%d",&mazegates) == EOF)
  74.         {
  75.           usage();
  76.           exit(1);
  77.         }
  78.         break;
  79.  
  80.       case 'l':
  81.         if (sscanf(argv[i+1],"%d",&leftgates) == EOF)
  82.         {
  83.           usage();
  84.           exit(1);
  85.         }
  86.         break;
  87.  
  88.       case 'c':
  89.         if (sscanf(argv[i+1],"%d",&mazecourts) == EOF)
  90.         {
  91.           usage();
  92.           exit(1);
  93.         }
  94.         break;
  95.  
  96.       case 'u':
  97.         if (sscanf(argv[i+1],"%d",&mazeunused) == EOF)
  98.         {
  99.           usage();
  100.           exit(1);
  101.         }
  102.         break;
  103.  
  104.       case 's':
  105.         if (sscanf(argv[i+1],"%d",&mazestraightness) == EOF)
  106.         {
  107.           usage();
  108.           exit(1);
  109.         }
  110.         break;
  111.  
  112.       default:
  113.         usage();
  114.         exit(1);
  115.       }
  116.       i += 2;
  117.     }
  118.   }
  119.   if (   ((mazewidth%2) != 1)
  120.       || ((mazeheight%2) != 1)
  121.       || (mazewidth < 11)
  122.       || (mazeheight < 11)
  123.       || (mazegates < 0)
  124.       || (mazegates > (2*((mazeheight - 6)/7) + 2*((mazewidth- 6)/7)))
  125.       || (leftgates < 0)
  126.       || (leftgates > mazegates)
  127.       || (mazecourts < 0)
  128.       || (mazecourts > (((mazeheight - 5)/6)*((mazewidth - 5)/6)))
  129.       || ((mazecourts + mazegates) < 1)
  130.       || (mazeunused > (((mazeheight - 1)/14)*((mazewidth - 1)/14)))
  131.       || (mazestraightness < 0)
  132.       || (mazestraightness > 998)
  133.      )
  134.   {
  135.     usage();
  136.     exit(1);
  137.   }
  138.   listsize = ((mazeheight - 1)/2)*((mazewidth - 1)/2);
  139.  
  140. #if HEADER
  141.   fprintf(stdout,
  142.    "ht %d wd %d gates %d left %d courts %d unused %d straight %d seed %ld\n",
  143.    mazeheight,mazewidth,mazegates,leftgates,mazecourts,mazeunused,
  144.    mazestraightness,randomseed);
  145. #endif
  146.   return;
  147. }
  148.