Wall_Is_You/maps.py

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