19 puts("Dodge the rocks until you die.");
21 puts(" -f, --full-screen");
22 puts(" -s, --silent No explosion sounds or music");
23 puts(" -V, --version Print program version");
24 puts(" -?, --help Give this help list");
26 puts("Mandatory or optional arguments to long options are also mandatory or optional");
27 puts("for any corresponding short options.");
29 puts("Report bugs at http://jasonwoof.com/contact.html");
33 short_opt(char c, char *arg)
36 case 'f': opt_fullscreen = 1; break;
37 case 's': opt_sound = 0; break;
39 printf("Variations on Rockdodger %s\n", VERSION);
44 fprintf(stderr, "unknown option -%c\n\n", c);
51 parse_short_opts(const char *s, char *arg)
53 while(s[1]) if(!short_opt(*s++, NULL)) return 0;
54 return short_opt(*s, arg);
57 static char *long_opts[] = { "full-screen", "silent", "version", "help" };
59 static char short_opts[] = { 'f', 's', 'V', 'h' };
62 parse_long_opt(const char *s, char *arg)
65 for(i=0; i<sizeof(short_opts); i++) {
66 if(strcmp(s, long_opts[i]) == 0)
67 return short_opt(short_opts[i], arg);
69 fprintf(stderr, "unknown long option --%s\n\n", s);
76 // Gameplay Variations
77 opt_bounciness = 0.50; // lose 50% when you hit the screen edge.
78 opt_gamespeed = 1.00; // Run game at full speed.
79 opt_max_lead = 1.00*XSIZE; // you can get 1 screen ahead.
87 parse_opts(int argc, char *argv[])
93 for(i=1; i<argc; i++) {
95 s = argv[i]; if(!*s) continue;
97 fputs("not an option\n\n", stderr);
103 for(r=s; *r; r++) if(*r == '=') { *r = 0; arg = r+1; break; }
104 if(!arg && (i+1 < argc)) arg = argv[i+1];
107 if(!parse_long_opt(s+1, arg)) { show_help(); return 0; }
109 if(!parse_short_opts(s, arg)) { show_help(); return 0; }