2018-02-11 14:02:26 +00:00
|
|
|
"""
|
|
|
|
Author: freezed <freezed@users.noreply.github.com> 2018-02-11
|
|
|
|
Version: 0.1
|
|
|
|
Licence: `GNU GPL v3` GNU GPL v3: http://www.gnu.org/licenses/
|
|
|
|
|
|
|
|
Ce fichier fait partie du projet `roboc`
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
# CONFIGURATION
|
|
|
|
|
|
|
|
MAP_DIRECTORY = 'cartes/' # repertoire des fichiers carte
|
|
|
|
MAP_EXTENTION = '.txt' # extention des fichiers carte
|
2018-02-15 10:00:12 +00:00
|
|
|
BACKUP_FILE = '.backup' # fichier de sauvegarde
|
2018-02-15 08:14:51 +00:00
|
|
|
DIRECTIONS = ['N', 'S', 'E', 'O'] # commandes de deplacement
|
2018-02-15 10:00:12 +00:00
|
|
|
MSG_NO_YES = ['non', 'oui']
|
2018-02-15 10:00:12 +00:00
|
|
|
COMMANDS = {'quit': 'Q', # commandes d'interuption
|
|
|
|
'help': 'H'}
|
2018-02-11 14:02:26 +00:00
|
|
|
MAZE_ELEMENTS = {'wall': 'O', # elements dispo dans le labyrinthe
|
|
|
|
'door': '.',
|
|
|
|
'exit': 'U',
|
2018-02-13 14:18:57 +00:00
|
|
|
'robo': 'X',
|
2018-02-15 10:00:12 +00:00
|
|
|
'void': ' '}
|
2018-02-14 14:32:08 +00:00
|
|
|
# Issue possible d'un mouvement, garder le OK toujours en fin de liste
|
2018-02-13 14:18:57 +00:00
|
|
|
MOVE_STATUS = ['bad', 'wall', 'exit', 'door', 'ok']
|
2018-02-15 10:00:12 +00:00
|
|
|
MOVE_STATUS_MSG = {'bad': "Le déplacement «{}» n'est pas autorisé.",
|
|
|
|
'wall': "Le déplacement est stoppé par un mur.",
|
|
|
|
'exit': "Vous êtes sortit du labyrinte",
|
|
|
|
'door': "Vous passez une porte",
|
|
|
|
'ok': "Jusqu'ici, tout va bien…"
|
|
|
|
}
|
2018-02-12 16:00:38 +00:00
|
|
|
|
|
|
|
ERR_ = "#!@?# Oups… "
|
|
|
|
ERR_MAP_FILE = ERR_ + "carte «{}» inaccessible!"
|
|
|
|
ERR_MAP_SIZE = ERR_ + "carte «{}», dimensions incorrecte: «{} x {}»"
|
|
|
|
ERR_MAP_ROBO = ERR_ + "robo est introuvable sur la carte «{}»!"
|
|
|
|
ERR_PLAGE = ERR_ + "saisir un nombre dans la plage indiquée! "
|
|
|
|
ERR_SAISIE = ERR_ + "saisir un nombre! "
|
2018-02-14 16:21:33 +00:00
|
|
|
ERR_UNKNOW = ERR_ + "personne n'est censé arriver ici…"
|
2018-02-12 16:00:38 +00:00
|
|
|
|
2018-02-12 14:39:42 +00:00
|
|
|
MIN_MAP_SIDE = 3
|
2018-02-15 10:00:12 +00:00
|
|
|
|
2018-02-11 14:02:26 +00:00
|
|
|
MSG_DISCLAMER = "Bienvenue dans Roboc."
|
2018-02-15 10:00:12 +00:00
|
|
|
MSG_AVAIBLE_BACKUP = "Sauvegarde dispo, voulez-vous la charger? ({}/{}) "
|
2018-02-11 14:02:26 +00:00
|
|
|
MSG_AVAIBLE_MAP = "Cartes disponible: "
|
2018-02-15 10:00:12 +00:00
|
|
|
MSG_BACKUP_DONE = "La partie a été sauvegardée."
|
|
|
|
MSG_BACKUP_GAME = "Partie sauvegardé"
|
2018-02-11 14:02:26 +00:00
|
|
|
MSG_CHOOSE_MAP = "Choississez un numéro de carte: "
|
2018-02-14 16:21:33 +00:00
|
|
|
MSG_CHOOSE_MOVE = "Votre deplacement: "
|
|
|
|
MSG_DOOR = "Vous passez une porte"
|
2018-02-11 14:02:26 +00:00
|
|
|
MSG_SELECTED_MAP = "Vous avez fait le choix #{}, la carte «{}»."
|
2018-02-14 16:21:33 +00:00
|
|
|
MSG_END_GAME = "Fin de la partie."
|
2018-02-12 21:34:39 +00:00
|
|
|
|
2018-02-11 14:02:26 +00:00
|
|
|
DEBUG = False
|
|
|
|
|
|
|
|
|
|
|
|
# VARIABLES
|
|
|
|
|
2018-02-15 10:00:12 +00:00
|
|
|
|
2018-02-11 14:02:26 +00:00
|
|
|
maps_name_list = list() # liste des maps proposees a l'utilisateur
|
2018-02-15 10:00:12 +00:00
|
|
|
user_select_backup = str() # choix utilisateur: la sauvegarde
|
2018-02-14 17:21:37 +00:00
|
|
|
|
2018-02-15 10:00:12 +00:00
|
|
|
|
2018-02-14 17:21:37 +00:00
|
|
|
# FUNCTIONS
|
2018-02-15 10:00:12 +00:00
|
|
|
|
|
|
|
|
2018-02-14 17:21:37 +00:00
|
|
|
def cls():
|
|
|
|
""" Efface l'historique de la console """
|
|
|
|
import os
|
|
|
|
os.system('clear')
|
2018-02-15 10:00:12 +00:00
|
|
|
return
|
|
|
|
|
2018-02-15 10:00:12 +00:00
|
|
|
|
2018-02-15 10:00:12 +00:00
|
|
|
def choose_maps_menu():
|
2018-02-15 10:00:12 +00:00
|
|
|
"""
|
|
|
|
Affiche le menu de selection des cartes
|
|
|
|
|
|
|
|
Recupere les cartes dans un repertoire, demande a l'utilisateur,
|
|
|
|
de choisir et effectue quelques tests sur la carte jouee avant de
|
|
|
|
creer
|
|
|
|
"""
|
2018-02-15 10:00:12 +00:00
|
|
|
from map import Map
|
2018-02-15 10:00:12 +00:00
|
|
|
|
2018-02-15 10:00:12 +00:00
|
|
|
# VARIABLES
|
|
|
|
user_select_map_id = -1 # choix utilisateur: une carte
|
|
|
|
|
|
|
|
print(MSG_AVAIBLE_MAP)
|
|
|
|
i = 0
|
|
|
|
for maps_name in maps_name_list:
|
|
|
|
print("\t[{}] - {}".format(i, maps_name))
|
|
|
|
i += 1
|
|
|
|
|
|
|
|
# Choix de la carte par l'utilisateur
|
|
|
|
while user_select_map_id > len(maps_name_list) or user_select_map_id < 0:
|
|
|
|
user_select_map_id = input(MSG_CHOOSE_MAP)
|
|
|
|
try:
|
|
|
|
user_select_map_id = int(user_select_map_id)
|
|
|
|
# ? if user_select_map_id is int(): ?
|
|
|
|
except ValueError as except_detail:
|
|
|
|
if DEBUG:
|
|
|
|
print("ValueError: «{}»".format(except_detail))
|
|
|
|
else:
|
|
|
|
print(ERR_SAISIE)
|
|
|
|
user_select_map_id = -1
|
|
|
|
continue
|
|
|
|
|
|
|
|
if user_select_map_id > len(maps_name_list) or \
|
|
|
|
user_select_map_id < 0:
|
|
|
|
print(ERR_PLAGE)
|
|
|
|
|
|
|
|
cls() # clear screen
|
2018-02-15 10:00:12 +00:00
|
|
|
print(MSG_SELECTED_MAP.format(
|
|
|
|
user_select_map_id,
|
|
|
|
maps_name_list[user_select_map_id]
|
|
|
|
))
|
2018-02-15 10:00:12 +00:00
|
|
|
|
|
|
|
# Fichier carte a recuperer
|
|
|
|
map_file = MAP_DIRECTORY + \
|
2018-02-15 10:00:12 +00:00
|
|
|
maps_name_list[user_select_map_id] + \
|
|
|
|
MAP_EXTENTION
|
2018-02-15 10:00:12 +00:00
|
|
|
|
|
|
|
# instenciation de la carte choisie
|
2018-02-15 10:00:12 +00:00
|
|
|
return Map(map_file)
|