82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import random, time
|
||
|
|
||
|
## Gestion des maps
|
||
|
|
||
|
def créer_salle(forme_salle):
|
||
|
"""
|
||
|
Créer une salle aléatoire (N,E,S,O)
|
||
|
@params void
|
||
|
@return une salle, tuple de taille 4
|
||
|
"""
|
||
|
|
||
|
correspondance = {
|
||
|
"╬" : (True,)*4,
|
||
|
|
||
|
"╡" : (False, False, False, True),
|
||
|
"╞" : (False, True, False, False),
|
||
|
"╥" : (False, False, True, False),
|
||
|
"╨" : (True, False, False, False),
|
||
|
|
||
|
"╔" : (False, True, True, False),
|
||
|
"╗" : (False, False, True, True),
|
||
|
"╝" : (True, False, False, True),
|
||
|
"╚" : (True, True, False, False),
|
||
|
|
||
|
"║" : (True, False, True, False),
|
||
|
"═" : (False, True, False, True),
|
||
|
|
||
|
"╦" : (False, True, True, True),
|
||
|
"╩" : (True, True, False, True),
|
||
|
"╠" : (True, True, True, False),
|
||
|
"╣" : (True, False, True, True)
|
||
|
}
|
||
|
|
||
|
return correspondance[forme_salle]
|
||
|
|
||
|
|
||
|
def charger(fichier, donjon, dragons, aventurier):
|
||
|
"""
|
||
|
Charge un fichier et peuple la structure donjon
|
||
|
@params fichier, chemin d'accès à un fichier
|
||
|
@return 1 ou None
|
||
|
"""
|
||
|
donjon.clear()
|
||
|
dragons.clear()
|
||
|
|
||
|
# Lecture fichier brut
|
||
|
contenu = ""
|
||
|
with open(fichier, 'r') as fichier:
|
||
|
contenu = fichier.read()
|
||
|
|
||
|
try:
|
||
|
# Séparation entre carte et coordonnées des personnages
|
||
|
donjon_map = contenu[:contenu.find("A")-1].split("\n")
|
||
|
donjon_declaration = contenu[contenu.find("A"):].split("\n")
|
||
|
|
||
|
# Création du donjon
|
||
|
for i in range(len(donjon_map[0])):
|
||
|
ligne = []
|
||
|
for j in range(len(donjon_map)):
|
||
|
ligne.append(créer_salle(donjon_map[i][j]))
|
||
|
donjon.append(ligne)
|
||
|
|
||
|
# Création des personnages
|
||
|
for declaration in donjon_declaration:
|
||
|
# Déclaration de l'aventurier
|
||
|
if "A" in declaration:
|
||
|
cible, x, y = declaration.split(" ")
|
||
|
aventurier["position"] = (x,y)
|
||
|
aventurier["niveau"] = 1
|
||
|
|
||
|
# Déclaration d'un dragon
|
||
|
elif "D" in declaration:
|
||
|
cible, x, y, niveau = declaration.split(" ")
|
||
|
dragons.append({ 'position' : (x,y), 'niveau' : niveau })
|
||
|
|
||
|
return 1
|
||
|
except Exception as e:
|
||
|
print("Erreur : {}".format(e))
|
||
|
return None
|