|
|
|
@ -72,6 +72,8 @@ def map_generator(n):
|
|
|
|
|
mask = pygame.mask.from_surface(start_room)
|
|
|
|
|
carte = [(start_room,mask,position)]
|
|
|
|
|
|
|
|
|
|
open_paths = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
counter = 0
|
|
|
|
|
retry = 0
|
|
|
|
@ -82,7 +84,13 @@ def map_generator(n):
|
|
|
|
|
dir_next = random.choice(current_label.replace(dir_from,''))
|
|
|
|
|
else:
|
|
|
|
|
dir_next = current_label
|
|
|
|
|
dir_from = ''
|
|
|
|
|
|
|
|
|
|
# stor open paths for later closing
|
|
|
|
|
for other_direction in current_label.replace(dir_from,'').replace(dir_next,''):
|
|
|
|
|
other_dir_from = change_side[other_direction]
|
|
|
|
|
other_position = [a+room_side*b for a,b in zip(position,deplacements[other_direction])]
|
|
|
|
|
open_paths.append((other_dir_from,other_position))
|
|
|
|
|
|
|
|
|
|
# Select the next room
|
|
|
|
|
if counter < n: # The next room is not the final room.
|
|
|
|
@ -113,10 +121,26 @@ def map_generator(n):
|
|
|
|
|
if retry > 10:
|
|
|
|
|
raise ValueError("Too much retries")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not check_map(carte):
|
|
|
|
|
raise ValueError("Invalid Map before closing paths.")
|
|
|
|
|
|
|
|
|
|
#Close all the open paths
|
|
|
|
|
for open_path in open_paths:
|
|
|
|
|
if open_path[1] not in positions:
|
|
|
|
|
room = unique_rooms[open_path[0]]
|
|
|
|
|
mask = pygame.mask.from_surface(room)
|
|
|
|
|
position = open_path[1]
|
|
|
|
|
carte.append((room,mask,position))
|
|
|
|
|
positions.append(position)
|
|
|
|
|
|
|
|
|
|
background = pygame.image.load(back_path).convert()
|
|
|
|
|
|
|
|
|
|
print("Open paths:")
|
|
|
|
|
print(open_paths)
|
|
|
|
|
|
|
|
|
|
if not check_map(carte):
|
|
|
|
|
raise ValueError("Invalid Map.")
|
|
|
|
|
raise ValueError("Invalid Map after closing paths.")
|
|
|
|
|
|
|
|
|
|
return(carte,(int(room_side/2),int(room_side/2)),background)
|
|
|
|
|
|
|
|
|
|