X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/ledger2?a=blobdiff_plain;f=roguelike.c;h=ebf440deeac6c00e25202b6800eff6625fcef422;hb=fa3b43c4b7a23503bbcf689e374e4eb7be108208;hp=afe73cece0e22c0d5fdced77b306ec591a9d6e44;hpb=b0722216897c1ec277caf6b2462fe5c1b4f5eca2;p=plomrogue diff --git a/roguelike.c b/roguelike.c index afe73ce..ebf440d 100644 --- a/roguelike.c +++ b/roguelike.c @@ -12,7 +12,7 @@ uint16_t rrand(char use_seed, uint32_t new_seed) { // Pseudo-random number generator (LGC algorithm). Use instead of rand() to ensure portable predictability. - static uint32_t seed = 0; + static uint32_t seed; if (0 != use_seed) seed = new_seed; seed = ((seed * 1103515245) + 12345) % 2147483648; // Values as recommended by POSIX.1-2001 (see rand(3)). @@ -67,9 +67,8 @@ void growshrink_active_window (struct WinMeta * win_meta, char change) { width++; resize_active_window (win_meta, height, width); } } -struct Map init_map (uint32_t seed) { +struct Map init_map () { // Initialize map with some experimental start values. - rrand(1, seed); struct Map map; map.width = 64; map.height = 64; @@ -188,22 +187,19 @@ void player_wait (struct World * world) { update_log (world, "\nYou wait."); } int main (int argc, char *argv[]) { - uint32_t seed = time(NULL); - int opt; - while ((opt = getopt(argc, argv, "l")) != -1) { - switch (opt) { - case 'l': - seed = load_seed(); - break; - default: - exit(EXIT_FAILURE); } } + uint32_t seed; + if (0 == access("seed", F_OK)) + seed = load_seed(); + else + seed = time(NULL); + rrand(1, seed); struct World world; init_keybindings(&world); world.turn = 0; world.log = calloc(1, sizeof(char)); update_log (&world, "Start!"); - struct Map map = init_map(seed); + struct Map map = init_map(); world.map = ↦ struct Player player; player.y = 8;