home · contact · privacy
Seed rrand() at start of main() instead of inside init_map().
[plomrogue] / roguelike.c
index afe73cece0e22c0d5fdced77b306ec591a9d6e44..7caaec9dd194a2d6219909a1856766e04c749950 100644 (file)
@@ -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)).
@@ -69,7 +69,6 @@ void growshrink_active_window (struct WinMeta * win_meta, char change) {
 
 struct Map init_map (uint32_t seed) {
 // Initialize map with some experimental start values.
-  rrand(1, seed);
   struct Map map;
   map.width = 64;
   map.height = 64;
@@ -197,6 +196,7 @@ int main (int argc, char *argv[]) {
         break;
       default:
         exit(EXIT_FAILURE); } }
+  rrand(1, seed);
 
   struct World world;
   init_keybindings(&world);