From 2981950c4d8341aef84806f54c3797186c5827ef Mon Sep 17 00:00:00 2001 From: Fred Z Date: Fri, 9 Feb 2018 16:11:31 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20en=20classe=20de=20la=20manipulation=20d?= =?UTF-8?q?e=20carte|TP=5F3.9|UPDATE=20roboc.py=20ADD=C2=A0map.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- roboc/map.py | 54 ++++++++++++++++++-------------------------------- roboc/roboc.py | 22 +++++++++----------- 2 files changed, 28 insertions(+), 48 deletions(-) diff --git a/roboc/map.py b/roboc/map.py index 36657cf..aa21823 100644 --- a/roboc/map.py +++ b/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 """ diff --git a/roboc/roboc.py b/roboc/roboc.py index 15a0526..0aa6fda 100644 --- a/roboc/roboc.py +++ b/roboc/roboc.py @@ -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()