… | |
… | |
312 | seeds.push (point (x, y)); |
312 | seeds.push (point (x, y)); |
313 | |
313 | |
314 | // phase 2, while we have seeds, if |
314 | // phase 2, while we have seeds, if |
315 | // seed is empty, floodfill, else grow |
315 | // seed is empty, floodfill, else grow |
316 | |
316 | |
|
|
317 | int rem_index = 0; // used to remove "somewhat ordered" |
|
|
318 | |
317 | while (seeds.size) |
319 | while (seeds.size) |
318 | { |
320 | { |
319 | coroapi::cede_to_tick (); |
321 | coroapi::cede_to_tick (); |
320 | |
322 | |
|
|
323 | int i = perturb |
|
|
324 | ? rmg_rndm (max (0, seeds.size - 8), seeds.size - 1) |
|
|
325 | : rem_index ++ % seeds.size; |
|
|
326 | |
321 | point p = seeds.remove (rmg_rndm (seeds.size)); |
327 | point p = seeds.remove (i); |
322 | |
328 | |
323 | x = p.x; |
329 | x = p.x; |
324 | y = p.y; |
330 | y = p.y; |
325 | |
331 | |
326 | if (!dist [x][y]) |
332 | if (!dist [x][y]) |
… | |
… | |
1011 | rmg_rndm.seed (time (0)); |
1017 | rmg_rndm.seed (time (0)); |
1012 | |
1018 | |
1013 | for(int i=1;i<100;i++) |
1019 | for(int i=1;i<100;i++) |
1014 | { |
1020 | { |
1015 | layout maze (40, 30); |
1021 | layout maze (40, 30); |
1016 | gen_village (maze); |
1022 | maze.fill_rand (99); |
1017 | maze.doorify (); |
1023 | maze.border (); |
|
|
1024 | maze.isolation_remover (2); |
1018 | maze.print (); |
1025 | maze.print (); |
1019 | exit(0); |
|
|
1020 | } |
1026 | } |
1021 | |
1027 | |
1022 | exit (1); |
1028 | exit (1); |
1023 | } |
1029 | } |
1024 | } demo; |
1030 | } demo; |