home *** CD-ROM | disk | FTP | other *** search
- /*
- ** getargs.c Copyright 1991 Kent Paul Dolan,
- ** Mountain View, CA, USA 94039-0755
- **
- ** Written to satisfy an inquiry on USENet's rec.games.programmer newsgroup.
- ** May be freely used or modified in any non-commercial work. Copyrighted
- ** only to prevent patenting by someone else.
- */
-
-
- #include <stdio.h>
- #include "townmaze.h"
- #include "townproto.h"
-
-
- #ifdef __STDC__
- void getargs(int argc,char *argv[])
- #else
- int getargs(argc,argv)
- int argc;
- char *argv[];
- #endif
- {
- int i;
-
- #if PROGRESS
- fprintf(stderr,"Get arguments ");
- #endif
-
- if (argc > 1)
- {
- if ((argc%2) != 1)
- {
- usage();
- exit(1);
- }
- i = 1;
- while (i < argc)
- {
- if ((*argv[i]) != '-')
- {
- usage();
- exit(1);
- }
- switch (*(argv[i]+1))
- {
- case 'h':
- if (sscanf(argv[i+1],"%d",&mazeheight) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 'w':
- if (sscanf(argv[i+1],"%d",&mazewidth) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 'r':
- if (sscanf(argv[i+1],"%ld",&randomseed) == EOF)
- {
- usage();
- exit(1);
- }
- SEEDRANDOM(randomseed); /* override clock seed in main() */
- break;
-
- case 'g':
- if (sscanf(argv[i+1],"%d",&mazegates) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 'l':
- if (sscanf(argv[i+1],"%d",&leftgates) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 'c':
- if (sscanf(argv[i+1],"%d",&mazecourts) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 'u':
- if (sscanf(argv[i+1],"%d",&mazeunused) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- case 's':
- if (sscanf(argv[i+1],"%d",&mazestraightness) == EOF)
- {
- usage();
- exit(1);
- }
- break;
-
- default:
- usage();
- exit(1);
- }
- i += 2;
- }
- }
- if ( ((mazewidth%2) != 1)
- || ((mazeheight%2) != 1)
- || (mazewidth < 11)
- || (mazeheight < 11)
- || (mazegates < 0)
- || (mazegates > (2*((mazeheight - 6)/7) + 2*((mazewidth- 6)/7)))
- || (leftgates < 0)
- || (leftgates > mazegates)
- || (mazecourts < 0)
- || (mazecourts > (((mazeheight - 5)/6)*((mazewidth - 5)/6)))
- || ((mazecourts + mazegates) < 1)
- || (mazeunused > (((mazeheight - 1)/14)*((mazewidth - 1)/14)))
- || (mazestraightness < 0)
- || (mazestraightness > 998)
- )
- {
- usage();
- exit(1);
- }
- listsize = ((mazeheight - 1)/2)*((mazewidth - 1)/2);
-
- #if HEADER
- fprintf(stdout,
- "ht %d wd %d gates %d left %d courts %d unused %d straight %d seed %ld\n",
- mazeheight,mazewidth,mazegates,leftgates,mazecourts,mazeunused,
- mazestraightness,randomseed);
- #endif
- return;
- }
-