#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "util.h" int randrange(int min, int max) { int range = max - min + 1; return (rand() % range) + min; } int randchance(double prob) { int resolution = RAND_MAX; return (rand() % resolution) < (prob * resolution); } int sign(int x) { if (x > 0) return 1; if (x < 0) return -1; return 0; } void parse_args(int argc, char *argv[], args_t *args) { int i; // Default parameter values args->dbg = 0; args->load = 0; args->save = 0; args->nummon = 10; args->seed = time(NULL); int valid = 1; for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "--save")) { args->save = 1; } else if (!strcmp(argv[i], "--load")) { args->load = 1; } else if (!strncmp(argv[i], "--seed", 6)) { if (strlen(argv[i]) > 7) { args->seed = atoi(argv[i] + 7); } else { valid = 0; } } else if (!strncmp(argv[i], "--nummon", 8)) { if (strlen(argv[i]) > 9) { args->nummon = atoi(argv[i] + 9); } else { valid = 0; } } else if (!strcmp(argv[i], "--dbg")) { args->dbg = 1; } else if (!strcmp(argv[i], "-h")) { valid = 0; } else { valid = 0; } } if (!valid) { fprintf(stderr, "Usage: %s [--load --save --dbg --seed=<seed> --nummon=<monsters to spawn>]\n", argv[0]); fprintf(stderr, " --load: \tInstead of generating a random dungeon, loads the saved dungeon\n\t\tfile from ~/.rlg327/dungeon\n"); fprintf(stderr, " --save: \tSaves the dungeon to ~/.rlg327/dungeon\n"); fprintf(stderr, " --seed: \tSeeds the random number generator to the given value. If not\n\t\tspecified, time(NULL) is used as the seed\n"); fprintf(stderr, " --nummon:\tSets the number of monsters to generate in the dungeon. If not\n\t\tspecified, the default is 10. Automatically capped at the number\n\t\tof empty spaces in the dungeon\n"); fprintf(stderr, " --dbg: \tEnables debug output\n"); fprintf(stderr, " -h: \tPrints this help information and exits\n"); exit(1); } } void print_args(args_t *args) { printf("Program Arguments:\n\tLoad: %d\n\tSave: %d\n\tSeed: %d\n\tMonsters: %d\n", args->load, args->save, args->seed, args->nummon); }