int gen_dungeon(dungeon_t *d) { /* pair_t p1, p2; p1[dim_x] = rand_range(1, 158); p1[dim_y] = rand_range(1, 94); p2[dim_x] = rand_range(1, 158); p2[dim_y] = rand_range(1, 94); */ empty_dungeon(d); /* connect_two_points_recursive(d, p1, p2); return 0; */ do { make_rooms(d); } while (place_rooms(d)); connect_rooms(d); place_stairs(d); return 0; }
int gen_dungeon(dungeon_t *d) { empty_dungeon(d); do { make_rooms(d); } while (place_rooms(d)); connect_rooms(d); place_stairs(d); return 0; }
int generate_dungeon(cell_t *cell_array, room_t *room_array, int *number_of_rooms) { *number_of_rooms = 0; generate_hardness(cell_array); generate_rooms(cell_array, room_array, number_of_rooms); connect_rooms(cell_array, room_array, *number_of_rooms); add_stairs(cell_array, room_array, *number_of_rooms); return 0; }
void make_level(void) { short i, j; short must_1, must_2, must_3; boolean big_room; must_2 = must_3 = 0; if (cur_level < LAST_DUNGEON) { cur_level++; } if (cur_level > max_level) { max_level = cur_level; } must_1 = get_rand(0, 5); switch(must_1) { case 0: must_1 = 0; must_2 = 1; must_3 = 2; break; case 1: must_1 = 3; must_2 = 4; must_3 = 5; break; case 2: must_1 = 6; must_2 = 7; must_3 = 8; break; case 3: must_1 = 0; must_2 = 3; must_3 = 6; break; case 4: must_1 = 1; must_2 = 4; must_3 = 7; break; case 5: must_1 = 2; must_2 = 5; must_3 = 8; break; } if (rand_percent(8)) { party_room = 0; } big_room = ((party_room != NO_ROOM) && rand_percent(1)); if (big_room) { make_room(BIG_ROOM, 0, 0, 0); } else { for (i = 0; i < MAXROOMS; i++) { make_room(i, must_1, must_2, must_3); } } if (!big_room) { add_mazes(); mix_random_rooms(); for (j = 0; j < MAXROOMS; j++) { i = random_rooms[j]; if (i < (MAXROOMS-1)) { (void)connect_rooms(i, i+1); } if (i < (MAXROOMS-3)) { (void)connect_rooms(i, i+3); } if (i < (MAXROOMS-2)) { if (rooms[i+1].is_room & R_NOTHING) { if (connect_rooms(i, i+2)) { rooms[i+1].is_room = R_CROSS; } } } if (i < (MAXROOMS-6)) { if (rooms[i+3].is_room & R_NOTHING) { if (connect_rooms(i, i+6)) { rooms[i+3].is_room = R_CROSS; } } } if (is_all_connected()) { break; } } fill_out_level(); } if (!has_amulet() && (cur_level >= AMULET_LEVEL)) { put_amulet(); } }