88 lines
2.5 KiB
Python
88 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import random, time
|
|
|
|
## Gestion des maps
|
|
|
|
NOM_MAP = ""
|
|
|
|
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
|
|
"""
|
|
global NOM_MAP
|
|
|
|
donjon.clear()
|
|
dragons.clear()
|
|
|
|
NOM_MAP = fichier
|
|
|
|
# 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"] = (int(x),int(y))
|
|
aventurier["niveau"] = 1
|
|
|
|
# Déclaration d'un dragon
|
|
elif "D" in declaration:
|
|
cible, x, y, niveau = declaration.split(" ")
|
|
dragons.append({ 'position' : (int(x),int(y)), 'niveau' : int(niveau) })
|
|
|
|
return 1
|
|
except Exception as e:
|
|
print("Erreur : {}".format(e))
|
|
return None
|