-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlabyrinthe.py
131 lines (90 loc) · 3.8 KB
/
labyrinthe.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#############################################################################################################################
### MATHS-QUEST ###
# Pour toutes informations, veillez vous référer au dépot GitHub : https://github.com/Gandalf0207/Maths-Quest
# © Tous droits réservé 2024
# PLADEAU Quentin & LUBAN Théo
############################################################################################################################
# DEBUT labyrinthe #
# Ce script permet de générer une carte aléatoirement à chaque demande duscript princiapl
# Ce script est inspiré d'un algorinthe "Fusion aléatoire de chemins"
# Importation du module nécessaire
import random # Module de l'aléatoire
#Fonction principal de gestion (appelé depuis le script principal)
def mapmaker(longueur, largeur): # Paramètres : Dimensions de la carte
if longueur %2==0: # Set du cadrillage de base
longueur +=1
if largeur %2==0: # Set du cadrillage de base
largeur+=1
L = []
# Generation de la map
for haut in range(largeur): # Création de la matrice dans la liste
l = []
if haut%2 ==0:
for long in range(longueur):
l.append("■")
L.append(l)
else:
for long in range(longueur):
if long%2==0:
l.append("■")
else:
l.append(" ")
L.append(l)
# On setup les caractères aléatoirement (ASCII) dans les cases vide pour pouvoir générer le labyrinthe
comp = 0
for x in range(len(L)):
for y in range(len(L[x])):
if L[x][y] ==" ":
L[x][y] = chr(ord("0") + comp)
comp+=1
go = True
# on choisit aléatoirement un mur dans la map (ors côté)
while go==True:
#check de s'il reste des cases non trouvé / non accessible par le joueur
comparateur_1 = -1
comparateur_2 = -1
for x in range(len(L)):
for y in range(len(L[x])):
if L[x][y] !="■":
if comparateur_1 == -1:
comparateur_1 = L[x][y]
elif L[x][y] != comparateur_1:
comparateur_2 = L[x][y]
if comparateur_2 == -1:
go = False
# Choix des coordonnés aléatoirement dans la map
x = random.randint(1,largeur-2)
y = random.randint(1,longueur-2)
if L[x-1][y] != "■" and L[x+1][y] != "■":
cell_1 = L[x-1][y]
cell_2 = L[x+1][y]
elif L[x][y-1] != "■" and L[x][y+1] != "■":
cell_1 = L[x][y-1]
cell_2 = L[x][y+1]
else:
continue
# on les compare et on agit en fonction
if cell_1 != cell_2:
L[x][y] = cell_1
i = 1
while i < (largeur-1):
j = 1
while j < (longueur-1):
if (L[i][j]==cell_2):
L[i][j] = cell_1
j+=1
i+=1
cell_1 = cell_1
#on remplace les cases de passage par des espace vides pour une meilleur vision
for x in range(len(L)):
for y in range(len(L[x])):
if L[x][y] != "■":
L[x][y] = " "
return L # On retourne la carte généré aléatoirement, vide
# FIN labyrinthe #
#############################################################################################################################
### MATHS-QUEST ###
# Pour toutes informations, veillez vous référer au dépot GitHub : https://github.com/Gandalf0207/Maths-Quest
# © Tous droits réservé 2024
# PLADEAU Quentin & LUBAN Théo
############################################################################################################################