Close remaining open paths

This commit is contained in:
grisel-davy 2020-05-05 00:13:57 -04:00
parent 6430830630
commit 9795abe51d
2 changed files with 27 additions and 3 deletions

View file

@ -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")
background = pygame.image.load(back_path).convert()
if not check_map(carte):
raise ValueError("Invalid Map.")
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 after closing paths.")
return(carte,(int(room_side/2),int(room_side/2)),background)