Cree une fonction pour afficher l'aide

Concerne le stockage des constantes DIRECTIONS & COMMANDS avec leurs
description specifique.
Desormais les 2 donnees sont stockees de la meme maniere (2 listes
distinctes contenant la commande et la description), permettant une
mise en forme simplifiee via une fonction (get_msg_list() )
This commit is contained in:
Fred Z 2018-02-17 18:54:12 +01:00
parent 487a696094
commit ec02c5bc0a
2 changed files with 44 additions and 29 deletions

View File

@ -14,8 +14,6 @@ MAP_DIRECTORY = 'cartes/' # repertoire des fichiers carte
MAP_EXTENTION = '.txt' # extention des fichiers carte
BACKUP_FILE = '.backup' # fichier de sauvegarde
MSG_NO_YES = ['non', 'oui']
COMMANDS = {'quit': 'Q', # commandes d'interuption
'help': 'H'}
# TODO standardiser la maniere de stocker:
# - DIRECTIONS & DIRECTIONS_LABEL
# - MOVE_STATUS & MOVE_STATUS_MSG
@ -23,6 +21,16 @@ COMMANDS = {'quit': 'Q', # commandes d'interuption
# Meilleure sera la comprehension de la conf et ca permettra de faire
# une fonction affiche_liste(VAR) commune pour la liste des fichiers de
# carte et celle de l'aide.
# COMMANDES D'INTERUPTION:
# le code utilise l'index des listes `COMMANDS` & `COMMANDS_LABEL`
# pour faire le lien entre les 2.
# Ici vous pouvez ajouter de nouvelles commandes de jeu, elle seront
# ajoutees a l'aide automatiquement. Mais il faudra ajouter le code
# leur correspondant dans la condition de traitement du mouvement.
COMMANDS = ['Q', 'H']
# Libelle des commandes d'interuption, conserver l'ordre
COMMANDS_LABEL = ['Sauvegarder & quitter', 'Aide']
DIRECTIONS = ['N', 'S', 'E', 'O'] # commandes clavier de deplacement
DIRECTIONS_LABEL = ['nord', # etiquette des commandes clavier
'sud', # des de deplacements pour
@ -58,15 +66,13 @@ MSG_AVAIBLE_MAP = "Cartes disponible: "
MSG_BACKUP_DONE = "La partie a été sauvegardée."
MSG_BACKUP_GAME = "Partie sauvegardé chargée"
MSG_CHOOSE_MAP = "Choississez un numéro de carte: "
MSG_CHOOSE_MOVE = "Votre deplacement ({} pour l'aide): "
MSG_CHOOSE_MOVE = "Votre deplacement ({}:{}): "
MSG_DOOR = "Vous passez une porte"
MSG_START_GAME = "Votre partie commence"
MSG_HELP = "Voici les commandes disponibles:\n"
MSG_SELECTED_MAP = "Vous avez fait le choix #{}, la carte «{}»."
MSG_END_GAME = "Fin de la partie."
TEMPLATE_HELP_LIST = "\t- «{}»: {}\n" # Modele de la liste d'aide
DEBUG = False
@ -137,3 +143,27 @@ def choose_maps_menu():
# instenciation de la carte choisie
return Map(map_file)
def get_msg_list(command, label):
"""
Formate une chaine pour afficher les commandes et leurs descriptifs
:type key: lst()
:param key: liste de commande
:type label: lst()
:param label: Texte descriptif des commande associee
:rtype: str()
:return: Chaine formatee assemblant les elements en parametres
"""
# Modele de mise en forme de la liste de chaque element
TEMPLATE = "\t- «{}»: {}\n"
# Variable de setour
result = str()
for key, value in enumerate(command):
result += TEMPLATE.format(value ,label[key])
return result

View File

@ -20,11 +20,11 @@ https://openclassrooms.com/courses/apprenez-a-programmer-en-python/exercises/180
import os
import pickle
# from map import Map
from configuration import BACKUP_FILE, choose_maps_menu, cls, COMMANDS, \
DIRECTIONS, DIRECTIONS_LABEL, ERR_UNKNOW, MAP_DIRECTORY, MAP_EXTENTION, maps_name_list, \
from configuration import BACKUP_FILE, choose_maps_menu, cls, COMMANDS, COMMANDS_LABEL, \
DIRECTIONS, DIRECTIONS_LABEL, ERR_UNKNOW, get_msg_list, MAP_DIRECTORY, MAP_EXTENTION, maps_name_list, \
MOVE_STATUS, MOVE_STATUS_MSG, MSG_AVAIBLE_BACKUP, MSG_BACKUP_DONE, MSG_BACKUP_GAME, \
MSG_CHOOSE_MOVE, MSG_DISCLAMER, MSG_END_GAME, MSG_HELP, MSG_NO_YES, \
TEMPLATE_HELP_LIST, user_select_backup
user_select_backup
# DEBUT DU JEU
@ -74,36 +74,20 @@ while current_map.status:
# choix du deplacement
user_select_move = input(MSG_CHOOSE_MOVE.format(
COMMANDS['help'])
COMMANDS[1], COMMANDS_LABEL[1])
).upper()
cls() # clear screen
if user_select_move == COMMANDS['quit']: # quitter et sauvegarder
if user_select_move == COMMANDS[0]: # sauvegarder & quitter
current_map.status = False
current_map.status_message = MSG_BACKUP_DONE
# TODO standardiser la maniere de stocker:
# - DIRECTIONS & DIRECTIONS_LABEL
# - MOVE_STATUS & MOVE_STATUS_MSG
# - COMMANDS
# Meilleure sera la comprehension de la conf et ca permettra de faire
# une fonction affiche_liste(VAR) commune pour la liste des fichiers de
# carte et celle de l'aide.
elif user_select_move == COMMANDS['help']: # Affiche l'aide
elif user_select_move == COMMANDS[1]: # Affiche l'aide
current_map.status_message = MSG_HELP
# liste les directions
for direction_id, direction in enumerate(DIRECTIONS):
current_map.status_message += TEMPLATE_HELP_LIST.format(
direction,
DIRECTIONS_LABEL[direction_id])
current_map.status_message += get_msg_list(DIRECTIONS, DIRECTIONS_LABEL)
# liste les commandes
for command, command_label in COMMANDS.items():
current_map.status_message += TEMPLATE_HELP_LIST.format(
command,
command_label)
current_map.status_message += get_msg_list(COMMANDS, COMMANDS_LABEL)
else: # traitement du deplacement
move_status_id = current_map.move_to(user_select_move)
@ -115,6 +99,7 @@ while current_map.status:
current_map.status = False
else: # sinon on sauvegarde avant de boucler
# FIXME le message tour a tour est perdu apres la sauvegarde
current_map.status_message = MSG_BACKUP_GAME
with open(BACKUP_FILE, 'wb') as backup_file:
pickle.Pickler(backup_file).dump(current_map)