Mise en classe de la manipulation de carte|TP_3.9|UPDATE roboc.py ADD map.py
This commit is contained in:
parent
f68ee97a3b
commit
2981950c4d
54
roboc/map.py
54
roboc/map.py
|
@ -13,53 +13,37 @@ import os
|
|||
|
||||
class Map:
|
||||
"""
|
||||
Map
|
||||
===
|
||||
|
||||
Classe gerant les cartes disponibles et la carte utilisee en cours
|
||||
de partie.
|
||||
|
||||
|
||||
:Example:
|
||||
>>> a = 10
|
||||
>>> a + 5
|
||||
15
|
||||
>>> MyMap = Map("cartes/test.txt")
|
||||
>>> print(MyMap)
|
||||
"""
|
||||
|
||||
def __init__(self, path_to_map_file):
|
||||
def __init__(self, map_file):
|
||||
"""
|
||||
Initialisation de la carte utilisee, mise en cache (grid),
|
||||
|
||||
:param name: nom de la carte chargee
|
||||
Initialisation de la carte utilise
|
||||
:param map_file:
|
||||
"""
|
||||
_column_nb = str() # Nombre de colonne de la carte
|
||||
_line_nb = str() # Nombre de ligne de la carte
|
||||
_grid = dict() # Contient la carte {(x, y): MAZE_ELEMENT.keys}
|
||||
name = str() # nom de la carte utilisee
|
||||
|
||||
# ouvre le fichier
|
||||
# Chargement du fichier carte choisi
|
||||
if os.path.isfile(map_file) is True:
|
||||
with open(map_file, "r") as map_data:
|
||||
self._data_text = map_data.read() # Contient le contenu de la carte en texte
|
||||
self._data_list = self._data_text.splitlines() # Contient la carte ligne a ligne
|
||||
self._column_nb = len(self._data_list[0]) # Nombre de colonne de la carte (1ere ligne)
|
||||
self._line_nb = len(self._data_list) # Contient le contenu de la carte en texte
|
||||
|
||||
# parcours le fichier et stocke sont contenu
|
||||
else:
|
||||
raise ValueError('ERR_MAP_FILE')
|
||||
|
||||
# ? verifie la coherence de la carte ?
|
||||
|
||||
# compte les colonnes et lignes
|
||||
|
||||
|
||||
def move_check(self, start, move):
|
||||
"""
|
||||
Verifie qu'un deplacement est possible
|
||||
|
||||
:param start: coordonnee de depart
|
||||
:param move: mouvement souhaite
|
||||
:return: 0: wall, 1: sortie, 2: door, 3: ok
|
||||
"""
|
||||
# verifie que le start est dans la carte
|
||||
|
||||
# verifie que le move est possible sur la carte
|
||||
|
||||
# retour
|
||||
line = int(self._line_nb)
|
||||
while line == 0:
|
||||
if self._data_list[line].find(maze_elmnt['robo']) != -1:
|
||||
self._position = (line, self._data_list[line].find(maze_elmnt['robo']))
|
||||
|
||||
line -= 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
""" Starting doctests """
|
||||
|
|
|
@ -34,7 +34,7 @@ MAZE_ELEMENTS = {'wall':'O', # elements disponibles dans le labyrinthe
|
|||
'door':'.',
|
||||
'exit':'U',
|
||||
'robo':'X'}
|
||||
ERR_MAP_FILE = "ERR_MAP_FILE"
|
||||
# ERR_MAP_FILE = "ERR_MAP_FILE"
|
||||
ERR_PLAGE = "Il faut saisir un nombre dans la plage indiquée! "
|
||||
ERR_SAISIE = "Il faut saisir un nombre! "
|
||||
MSG_DISCLAMER = "Bienvenue dans Roboc."
|
||||
|
@ -42,11 +42,11 @@ MSG_AVAIBLE_MAP = "Cartes disponible: "
|
|||
MSG_CHOOSE_MAP = "Choississez un numéro de carte: "
|
||||
MSG_SELECTED_MAP = "Vous avez fait le choix #{}, la carte «{}»."
|
||||
|
||||
|
||||
# VARIABLES
|
||||
maps_name_list = list() # liste des maps proposees a l'utilisateur
|
||||
selected_map = -1 # carte choisie par l'utilisateur
|
||||
|
||||
|
||||
# FONCTIONS
|
||||
|
||||
|
||||
|
@ -65,6 +65,9 @@ else:
|
|||
if map_file[filename_len:] == MAP_EXTENTION:
|
||||
maps_name_list.append(map_file[:filename_len])
|
||||
|
||||
# Fichier carte a recuperer
|
||||
map_file = MAP_DIRECTORY + maps_name_list[selected_map] + MAP_EXTENTION
|
||||
|
||||
#Chercher si une sauvegarde existe
|
||||
# TODO
|
||||
|
||||
|
@ -94,22 +97,15 @@ while selected_map > len(maps_name_list) or selected_map < 0:
|
|||
# TODO : clear screen
|
||||
|
||||
print(MSG_SELECTED_MAP.format(selected_map, maps_name_list[selected_map]))
|
||||
map_file = MAP_DIRECTORY + maps_name_list[selected_map] + MAP_EXTENTION
|
||||
|
||||
# Chargement du fichier carte choisi
|
||||
if os.path.isfile(map_file) is True:
|
||||
with open(map_file, "r") as map_data:
|
||||
map_scheme = map_data.read()
|
||||
else:
|
||||
raise ValueError(ERR_MAP_FILE)
|
||||
|
||||
# Affichage de la carte et de la position de jeu
|
||||
# print(map_file)
|
||||
print(map_scheme)
|
||||
print(map_data_text)
|
||||
print("X" in map_data_list)
|
||||
|
||||
# Fin de partie
|
||||
|
||||
if __name__ == "__main__":
|
||||
""" Starting doctests """
|
||||
# import doctest
|
||||
# doctest.testmod()
|
||||
import doctest
|
||||
doctest.testmod()
|
||||
|
|
Loading…
Reference in New Issue